Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. data Stream a = (:+) a (Stream a)
  2. instance (Num a) => Num (Stream a) where
  3.     a0:+a' + b0:+b' = (a0+b0):+(a'+b')
  4.  
  5. rep :: a -> Stream a
  6. rep a = a :+ rep a
  7.  
  8. drop :: Int -> Int -> Stream a -> Stream a
  9. drop 0 k (a0:+(a1:+a'')) = a1 :+ drop (k-2) k a''
  10. drop i k (a0:+a') = a0 :+ drop (i-1) k a'
  11.  
  12. sum :: Num a => Stream a -> Stream a
  13. sum (a0:+a') = a0 :+ (sum a' + rep a0)
  14.  
  15. moessner :: Num a => Int -> Stream a
  16. moessner n = foldr (.) id [sd k (k+1) | k <- [1..n]] ones
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement