diff options
Diffstat (limited to 'ch03')
| -rw-r--r-- | ch03/3_b_7.hs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/ch03/3_b_7.hs b/ch03/3_b_7.hs new file mode 100644 index 0000000..51f7849 --- /dev/null +++ b/ch03/3_b_7.hs @@ -0,0 +1,32 @@ +-- Define a function that joins a list of lists together using a separator value. +-- +-- -- file: ch03/Intersperse.hs +-- intersperse :: a -> [[a]] -> [a] +-- +-- The separator should appear between elements of the list, but should not +-- follow the last element. Your function should behave as follows. +-- +-- ghci> :load Intersperse +-- [1 of 1] Compiling Main ( Intersperse.hs, interpreted ) +-- Ok, modules loaded: Main. +-- ghci> intersperse ',' [] +-- "" +-- ghci> intersperse ',' ["foo"] +-- "foo" +-- ghci> intersperse ',' ["foo","bar","baz","quux"] +-- "foo,bar,baz,quux" + +myIntersperse :: a -> [[a]] -> [a] +myIntersperse _ [] = [] +myIntersperse _ (x:[]) = x +myIntersperse s (x:xs) = x ++ s:(myIntersperse s xs) + +-- ghci> :l 3_b_7.hs +-- [1 of 1] Compiling Main ( 3_b_7.hs, interpreted ) +-- Ok, one module loaded. +-- ghci> myIntersperse ',' [] +-- "" +-- ghci> myIntersperse ',' ["foo"] +-- "foo" +-- ghci> myIntersperse ',' ["foo","bar","baz","quux"] +-- "foo,bar,baz,quux" |
