aboutsummaryrefslogtreecommitdiff
path: root/ch04/4_b_6.hs
diff options
context:
space:
mode:
authorJan Sucan <jan@jansucan.com>2023-03-21 21:16:01 +0100
committerJan Sucan <jan@jansucan.com>2023-03-21 21:16:01 +0100
commitca95e3929826664716cecc73b4efd0c5ce766ccf (patch)
treef8379603edc52ae2bfc6bb6749e8e00473ed41de /ch04/4_b_6.hs
parent0d0c3870d945f07e93337c2c2941d85106f807d6 (diff)
4_b_5 and 4_b_6: Add solutions
Diffstat (limited to 'ch04/4_b_6.hs')
-rw-r--r--ch04/4_b_6.hs30
1 files changed, 30 insertions, 0 deletions
diff --git a/ch04/4_b_6.hs b/ch04/4_b_6.hs
new file mode 100644
index 0000000..91604d4
--- /dev/null
+++ b/ch04/4_b_6.hs
@@ -0,0 +1,30 @@
+-- 1. The Prelude function concat concatenates a list of lists into a single list
+-- and has the following type:
+--
+-- -- file: ch04/ch04.exercises.hs
+-- concat :: [[a]] -> [a]
+--
+-- 2. Write your own definition of concat using foldr.
+
+myConcat :: [[a]] -> [a]
+myConcat xs = foldr (++) [] xs
+
+-- ghci> :l 4_b_6.hs
+-- [1 of 1] Compiling Main ( 4_b_6.hs, interpreted )
+-- Ok, one module loaded.
+-- ghci> concat []
+-- []
+-- ghci> concat [[]]
+-- []
+-- ghci> concat [[1]]
+-- [1]
+-- ghci> concat [[1], [2,3], [4,5,6]]
+-- [1,2,3,4,5,6]
+-- ghci> myConcat []
+-- []
+-- ghci> myConcat [[]]
+-- []
+-- ghci> myConcat [[1]]
+-- [1]
+-- ghci> myConcat [[1], [2,3], [4,5,6]]
+-- [1,2,3,4,5,6]