diff options
Diffstat (limited to 'lec06/Fibonacci.hs')
-rw-r--r-- | lec06/Fibonacci.hs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lec06/Fibonacci.hs b/lec06/Fibonacci.hs index 9993169..bc9e366 100644 --- a/lec06/Fibonacci.hs +++ b/lec06/Fibonacci.hs @@ -34,3 +34,15 @@ streamMap f (Cons a as) = Cons (f a) (streamMap f as) streamFromSeed :: (a -> a) -> a -> Stream a streamFromSeed f s = Cons s (streamFromSeed f (f s)) +-- Exercise 5 + +nats :: Stream Integer +nats = streamFromSeed (+1) 0 + +-- The number of times an integer can be evenly divided by 2. +evenDiv2 :: Integer -> Integer +evenDiv2 n = toInteger $ length $ takeWhile even $ iterate (`quot` 2) n + +ruler :: Stream Integer +ruler = streamMap evenDiv2 $ streamFromSeed (+1) 1 + |