-- define a stream ones ones = 1 : ones --- ones = [1,1,1,1,...] -- applying map to the stream twos = map (+1) ones >take 5 twos [2,2,2,2,2] --- twos = [2,2,2,2,...]
stream 上で何の問題もなく map が適用できました。
次に naturals = [1,2,3,4,....] という stream を再帰的に定義してみます。
zeros = 0 : zeros 1 : naturals = zipWith (+) (1 : zeros) naturals >take 5 naturals [1,2,3,4,5]
フィボナッチ数列 [2,3,5,8,...] の定義は
fib = zipWith (+) (1:fib) (1:1:fib)