Re: Stream expression and compile

"Manfred Lotz [email protected] [ocaml_beginners]" <[email protected]> Mon, 4 Jul 2016 16:41:26 +0200
Newsgroups gmane.comp.lang.ocaml.beginners
Message-ID <[email protected]>
Thanks, Gabriel. 

What you showed me works fine (no surprise), and was really helpful.

-- 
Best, Manfred


On Sun, 3 Jul 2016 18:09:05 -0400
"Gabriel Scherer [email protected] [ocaml_beginners]"
<[email protected]> wrote:

> I would use either:
> 
>   ocamlfind ocamlopt -package camlp4 -syntax camlp4o walk.ml -o
> walk.native
> 
> or
> 
>   ocamlbuild -use-ocamlfind -package camlp4 -syntax camlp4o
> walk.native
> 
> ocamlfind is mentioned in
>   http://ocaml.org/learn/tutorials/compiling_ocaml_projects.html
> but no example with camlp4 extensions is given. On the contrary, the
> author documentation's has a very clear tutorial:
> 
> http://projects.camlcity.org/projects/dl/findlib-1.6.2/doc/guide-html/quickstart.html
> 
> For ocamlbuild (which is not very useful here but easily scales to
> medium-sized projects),
> 
> https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc#18-syntax-extensions
> 
> On Sun, Jul 3, 2016 at 1:42 PM, Manfred Lotz [email protected]
> [ocaml_beginners] <[email protected]> wrote:
> 
> > Hi there,
> > From https://ocaml.org/learn/tutorials/stream_expressions.html I
> > created a file walk.ml containing the following:
> >
> > let rec walk dir =
> >     let items =
> >       try
> >         Array.map
> >           (fun fn ->
> >              let path = Filename.concat dir fn in
> >              try
> >                if Sys.is_directory path then `Dir path
> >                else `File path
> >              with e -> `Error (path, e))
> >           (Sys.readdir dir)
> >       with e -> [| `Error (dir, e) |] in
> >     Array.fold_right
> >       (fun item rest ->
> >          match item with
> >          | `Dir path -> [< 'item; walk path; rest >]
> >          | _ -> [< 'item; rest >])
> >       items
> >       [< >];;
> >
> >
> > let () =
> >     Stream.iter
> >       (function
> >        | `Dir path ->  Printf.printf "dir: %s%!\n" path
> >        | `File path -> Printf.printf "file: %s%!\n" path
> >        | `Error (path, e) ->
> >            Printf.printf "error: %s (%s)%!\n" path
> >              (Printexc.to_string e))
> >       (walk "/tmp");;
> >
> >
> > Running this in utop works fine when I did
> > #use "topfind";;
> > #camlp4o;;
> >
> > before.
> >
> >
> > However, I have no idea how to create a bytecode or native
> > executable from above code.
> >
> > If this is dead simple I would like to get a pointer to the
> > documentation so that I learn what I missed to read.
> >
> >
> > Any help appreciated.  Thanks.
> >
> >
> > --
> > Manfred
> >
> >
> >
> >
> > ------------------------------------
> > Posted by: Manfred Lotz <[email protected]>
> > ------------------------------------
> >
> > Archives up to December 31, 2011 are also downloadable at
> > http://www.connettivo.net/cntprojects/ocaml_beginners
> > The archives of the very official ocaml list (the seniors' one) can
> > be found at http://caml.inria.fr
> > Attachments are banned and you're asked to be polite, avoid flames
> > etc. ------------------------------------
> >
> > Yahoo Groups Links
> >
> >
> >
> >