summaryrefslogtreecommitdiff
path: root/lec06
diff options
context:
space:
mode:
authorEdoardo La Greca2025-08-28 16:19:23 +0200
committerEdoardo La Greca2025-08-28 16:23:36 +0200
commit79d021f510d15c67e534dd8f54c5c603b62d61b4 (patch)
tree8dd320dbbf43d7baa7b1e7ef8ccefb7701028785 /lec06
parent523c7a99f8644a9d6cb39759ecc74b18b0385c2a (diff)
add fifth exercise of lecture 6
Diffstat (limited to 'lec06')
-rw-r--r--lec06/Fibonacci.hs12
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
+