Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data Stream a = (:+) a (Stream a)
- instance (Num a) => Num (Stream a) where
- a0:+a' + b0:+b' = (a0+b0):+(a'+b')
- rep :: a -> Stream a
- rep a = a :+ rep a
- drop :: Int -> Int -> Stream a -> Stream a
- drop 0 k (a0:+(a1:+a'')) = a1 :+ drop (k-2) k a''
- drop i k (a0:+a') = a0 :+ drop (i-1) k a'
- sum :: Num a => Stream a -> Stream a
- sum (a0:+a') = a0 :+ (sum a' + rep a0)
- moessner :: Num a => Int -> Stream a
- moessner n = foldr (.) id [sd k (k+1) | k <- [1..n]] ones
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement