From 79d021f510d15c67e534dd8f54c5c603b62d61b4 Mon Sep 17 00:00:00 2001 From: Edoardo La Greca Date: Thu, 28 Aug 2025 16:19:23 +0200 Subject: add fifth exercise of lecture 6 --- lec06/Fibonacci.hs | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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 + -- cgit v1.2.3