X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=exercises%2Fassignment5.mdwn;h=a74da85a2c47e57768ffe4faced717c96d5e4c8e;hp=c72ce6dace4fffbeee17bec0c9e100102c7549be;hb=7888d341776f23849c60cd82ca816ed13e5bc9c2;hpb=54e161fd7049591e965de73874c0eb1406bc53e4
diff --git a/exercises/assignment5.mdwn b/exercises/assignment5.mdwn
index c72ce6da..a74da85a 100644
--- a/exercises/assignment5.mdwn
+++ b/exercises/assignment5.mdwn
@@ -329,7 +329,7 @@ any type `Î±`, as long as your function is of type `Î± -> Î±` and you have a bas
-- Or this:
let sysf_true = (\y n -> y) :: Sysf_bool a
- Note that in both OCaml and the Haskell code, the generalization `â'a` on the free type variable `'a` is implicit. If you really want to, you can supply it explicitly in Haskell by saying:
+ Note that in both OCaml and Haskell code, the generalization `âÎ±` on the free type variable `Î±` is implicit. If you really want to, you can supply it explicitly in Haskell by saying:
:set -XExplicitForAll
let { sysf_true :: forall a. Sysf_bool a; ... }
@@ -384,6 +384,8 @@ Yet we haven't given ourselves the capacity to talk about `list [S]` and so on a
= Î»f:T -> S. Î»xs:list. xs [T] [list [S]] (Î»x:T. Î»ys:list [S]. cons [S] (f x) ys) (nil [S])
-->
+*Update: Never mind, don't bother with the next three questions. They proved to be more difficult to implement in OCaml than we expected. Here is [[some explanation|assignment5 hint4]].*
+
19. Convert this list encoding and the `map` function to OCaml or Haskell. Again, call the type `sysf_list`, and the functions `sysf_nil`, `sysf_cons`, and `sysf_map`, to avoid collision with the names for native lists and functions in these languages. (In OCaml and Haskell you *can* say `('t) sysf_list` or `Sysf_list t`.)
20. Also give us the type and definition for a `sysf_head` function. Think about what value to give back if its argument is the empty list. It might be cleanest to use the `option`/`Maybe` technique explored in questions 1--2, but for this assignment, just pick a strategy, no matter how clunky.
@@ -406,7 +408,7 @@ Be sure to test your proposals with simple lists. (You'll have to `sysf_cons` up
# k 1 true ;;
- : int = 1
- If you can't understand how one term can have several types, recall our discussion in this week's notes of "principal types". (WHERE?)
+ If you can't understand how one term can have several types, recall our discussion in this week's notes of "principal types".