X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=assignment3.mdwn;h=c7c5be41755bf6c0f28e7ca860474d53884e0489;hp=775eb79e571e78cfdca489121751b0262f9e4c07;hb=34983e83fd449a9856d571ddf4f5290ab6a25bad;hpb=101b2a435c05ae480eaefaf30348e80bd2d3de5d diff --git a/assignment3.mdwn b/assignment3.mdwn index 775eb79e..c7c5be41 100644 --- a/assignment3.mdwn +++ b/assignment3.mdwn @@ -4,7 +4,7 @@ Assignment 3 Once again, the lambda evaluator will make working through this assignment much faster and more secure. -*Writing recursive functions on version 1 style lists* +#Writing recursive functions on version 1 style lists# Recall that version 1 style lists are constructed like this (see [[lists and numbers]]): @@ -73,7 +73,9 @@ like `map` and `filter`. But now that we have recursion in our toolbox, reasonable map and filter functions for version 3 lists are within our reach. Give definitions for `map` and a `filter` for verson 1 type lists. -6. Linguists analyze natural language expressions into trees. +#Computing with trees# + +Linguists analyze natural language expressions into trees. We'll need trees in future weeks, and tree structures provide good opportunities for learning how to write recursive functions. Making use of the resources we have at the moment, we can approximate @@ -104,11 +106,11 @@ whether the length of the list is less than or equal to 1. This will be your base case for your recursive functions that operate on these trees. -#Write a function that sums the number of leaves in a tree.# +1. Write a function that sums the number of leaves in a tree. + Expected behavior:
-
 let t1 = (make-list 1 nil) in
 let t2 = (make-list 2 nil) in
 let t3 = (make-list 3 nil) in
@@ -126,7 +128,7 @@ count-leaves t23 ~~> 5
 count-leaves ta ~~> 6
 count-leaves tb ~~> 6
 count-leaves tc ~~> 6
-
+
-#Write a function that counts the number of leaves.# +2. Write a function that counts the number of leaves.