aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--ch03/3_a_1.hs14
2 files changed, 15 insertions, 1 deletions
diff --git a/README.md b/README.md
index 27627ef..ae090f7 100644
--- a/README.md
+++ b/README.md
@@ -51,7 +51,7 @@ more visible in the list the first exercise of a group is in bold italics.
| **_2_b_1_** | yes | 39 | |
| 2_b_2 | yes | | |
| 2_b_3 | yes | | |
-| **_3_a_1_** | | 60 | 3. Defining types, streamlining functions |
+| **_3_a_1_** | yes | 60 | 3. Defining types, streamlining functions |
| 3_a_2 | | | |
| **_3_b_1_** | | 69 | |
| 3_b_2 | | | |
diff --git a/ch03/3_a_1.hs b/ch03/3_a_1.hs
new file mode 100644
index 0000000..6e2b634
--- /dev/null
+++ b/ch03/3_a_1.hs
@@ -0,0 +1,14 @@
+-- Write the converse of fromList for the List type: a function that takes a
+-- List a and generates a [a].
+
+{-- From examples/examples/ch03/ListADT.hs --}
+data List a = Cons a (List a)
+ | Nil
+ deriving (Show)
+{-- End of code from examples --}
+
+toList (Cons x xs) = x:(toList xs)
+toList Nil = []
+
+-- ghci> toList (Cons 1 (Cons 2 (Cons 3 Nil)))
+-- [1,2,3]