Witam

Chcę w Ocamlu stworzyć strumień znaków pobieranych z pliku tektowego. Postać tego strumienia to
type 'a stream = EndOfStream | Cons of 'a * 'a stream Lazy.t;;
Zawsze kiedy używam Cons muszę pamiętać o Lazy. Na pewnej stronie znalazłem sposob na ominięcie tego poprzez
zdefiniowanie kakra Cons dla preprocesora P4 tak aby Cons (h, t) było Cons (h, lazy t). Próbuję poprzez dodanie czegoś takiego

#load "camlp4o.cma";;
#load "pa_extend.cmo";;
#load "q_MLast.cmo";;

EXTEND
  Pcaml.expr: LEVEL "simple"
  [ [ UIDENT "Cons"; param=SELF ->
        let h,l =
          match param with <:expr< ($list:[h;l]$) >> -> (h,l)
                           | _ -> raise Not_found
        in
          <:expr< Cons ($h$) (lazy $l$)>> ] ]
  ;
END;;

Mam kłopot ze skompilowaniem tego. Czy może ktoś wie jak powinienem zapisać takie makro i jak to kompilować.

Pozdrawiam

Bazyli