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