Я пытаюсь перебрать поток, чтобы распечатать содержимое.
type 'a stream = Nil | Cons of 'a * 'a stream thunk and 'a thunk = unit -> 'a
Здесь вызывается моя функция
|> iter_stream ~f:(fun (f,c,l) -> printf "%s %s %s\n" f c l)
А это тип
let rec iter_stream st ~f
(* val iter_stream : 'a stream -> ('a -> unit) -> unit *)
Я не могу найти никаких примеров того, как реализовать это. Единственная идея, которая у меня есть, - думать об этом как о списке, который явно неверен, поскольку я получаю ошибки типа.
let rec iter_stream st ~f =
match st with
| None -> ()
| Some(x, st') -> f x; iter_stream st' ~f