20 lines
415 B
Haskell
20 lines
415 B
Haskell
data Stream a =
|
|
Cons a (Stream a)
|
|
deriving Show
|
|
|
|
-- | Return first n elements from a stream as a list
|
|
streamTake
|
|
:: Int -- ^ Number of elements to take
|
|
-> Stream a -- ^ Input stream
|
|
-> [a] -- ^ List of elements from input stream
|
|
streamTake 0 xs = []
|
|
streamTake n (Cons x xs) = x : streamTake (n-1) xs
|
|
|
|
x = Cons 0 $ Cons 1 $ Cons 2 x
|
|
|
|
{-
|
|
- *Main> streamTake 5 x
|
|
- [0,1,2,0,1]
|
|
- }
|
|
|