diff options
Diffstat (limited to 'Haskell-book/27/StrictList.hs')
| -rw-r--r-- | Haskell-book/27/StrictList.hs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Haskell-book/27/StrictList.hs b/Haskell-book/27/StrictList.hs new file mode 100644 index 0000000..f75bb05 --- /dev/null +++ b/Haskell-book/27/StrictList.hs @@ -0,0 +1,20 @@ +{-# LANGUAGE Strict #-} + +module StrictList where + +data List a = + Nil + | Cons ~a ~(List a) + deriving (Show) + +take' n _ | n <= 0 = Nil +take' _ Nil = Nil +take' n (Cons x xs) = (Cons x (take' (n - 1) xs)) + +map' _ Nil = Nil +map' f (Cons x xs) = (Cons (f x) (map' f xs)) + +repeat' x = xs where xs = (Cons x xs) + +main = do + print $ take' 10 $ map' (+1) (repeat' 1) |
