From: jim Date: Sun, 8 Mar 2015 02:10:18 +0000 (-0500) Subject: cancel the System F lists -> OCaml X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=commitdiff_plain;h=6922b3d0f2e4fc3a60bc2a388bac5586156beb9f cancel the System F lists -> OCaml --- diff --git a/exercises/assignment5.mdwn b/exercises/assignment5.mdwn index c72ce6da..00ede5aa 100644 --- a/exercises/assignment5.mdwn +++ b/exercises/assignment5.mdwn @@ -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 hint3]].* + 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.