let rec iterate f value = seq { yield value yield! iterate f (f value) }
let pascal = iterate (fun xs -> List.map2 (+) (0::xs) (xs @ [0])) [1]