diff options
author | Edoardo La Greca | 2025-08-28 16:19:23 +0200 |
---|---|---|
committer | Edoardo La Greca | 2025-08-28 16:23:36 +0200 |
commit | 79d021f510d15c67e534dd8f54c5c603b62d61b4 (patch) | |
tree | 8dd320dbbf43d7baa7b1e7ef8ccefb7701028785 /lec06 | |
parent | 523c7a99f8644a9d6cb39759ecc74b18b0385c2a (diff) |
add fifth exercise of lecture 6
Diffstat (limited to 'lec06')
-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 + |