Indeed, that works well (I wouldn't have thought so!) and is definitely not (too) cumbersome. Thanks! 2014-07-02 14:51 GMT+02:00 Fabrice Le Fessant : > You might want to split your file in two different files, a loader and the > body: > > peerocaml:~% cat > script_body.ml > open Sexplib.Std;; > type t = int with sexp;; > peerocaml:~% cat > script.ml > #use "topfind";; > #camlp4o;; > #require "sexplib.syntax";; > #use "script_body.ml" > peerocaml:~% ocaml script.ml > > --Fabrice > INRIA & OCamlPro > > > > > On Wed, Jul 2, 2014 at 1:48 PM, Philippe Veber > wrote: > >> Thanks Fabrice, this perfectly explains what I observe. Is this behavior >> considered the right one? Reading from a pipe is regretfully not an option >> for me, as my script has command line arguments. Hence when I type: >> >> cat script.ml | ocaml --foo --bar 1 >> >> the toplevel complains it knows nothing about the arguments foo and bar. >> A "--" argument would be useful but it seems not available. If it's so, >> I'll file a feature request on Mantis, since without it, there seems to be >> no way to give a script to the toplevel that both takes command line >> arguments and uses a syntax extension. >> >> Thanks again! >> >> >> >> 2014-07-02 10:08 GMT+02:00 Fabrice Le Fessant < >> Fabrice.Le_fessant@inria.fr>: >> >> If I remember well, I think "ocaml" has a different behavior depending on >>> what it reads from: >>> * From a pipe, it parses every sentence and execute each one immediatly. >>> * From a file, it tries to parse the whole file, and then executes >>> everything. >>> >>> In the second case, it means it will only execute the load of the syntax >>> extension after parsing the whole file... which will fail, since the syntax >>> extension is needed for that. >>> >>> --Fabrice >>> INRIA & OCamlPro >>> >>> >>> >>> On Tue, Jul 1, 2014 at 7:06 PM, Philippe Veber >> > wrote: >>> >>>> Thanks David! >>>> >>>> The first call fails with a syntax error on "with sexp": >>>> >>>> [pbil:~ 18:58]$cat rien.ml >>>> >>>> let () = >>>> try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH") >>>> with Not_found -> () >>>> ;; >>>> >>>> #use "topfind";; >>>> #camlp4o;; >>>> #require " sexplib.syntax";; >>>> >>>> open Sexplib.Std;; >>>> >>>> type t = int with sexp;; >>>> >>>> [pbil:~ 18:58]$ocaml rien.ml >>>> File "rien.ml", line 12, characters 13-17: >>>> Error: Syntax error >>>> >>>> It seems like the sexp syntax extension is not loaded when the script >>>> is evaluated. But it's not really clear to me what going wrong... >>>> >>>> Cheers! >>>> ph. >>>> >>>> >>>> >>>> 2014-07-01 18:51 GMT+02:00 David Sheets : >>>> >>>> On Tue, Jul 1, 2014 at 5:38 PM, Philippe Veber < >>>>> philippe.veber@gmail.com> wrote: >>>>> > Reposting this question here, just in case. >>>>> > >>>>> > ---------- Forwarded message ---------- >>>>> > From: Philippe Veber >>>>> > Date: 2014-06-28 21:32 GMT+02:00 >>>>> > Subject: Toplevel and syntax extension. >>>>> > To: ocaml_beginners@yahoogroups.com >>>>> > >>>>> > >>>>> > Dear camlers, >>>>> > >>>>> > Consider the following script: >>>>> > >>>>> > #use "topfind";; >>>>> > #camlp4o;; >>>>> > #require "sexplib.syntax";; >>>>> > >>>>> > open Sexplib.Std;; >>>>> > >>>>> > type t = int with sexp;; >>>>> > >>>>> > Saved as script.ml, the simple call: >>>>> > >>>>> > ocaml script.ml >>>>> > >>>>> > fails while the call: >>>>> > >>>>> > cat script.ml | ocaml >>>>> > >>>>> > succeeds. Any idea how I could fix the first call? >>>>> >>>>> How does the first call fail? A difference between the two is that, in >>>>> the second, the .ocamlinit file is used. If you are using opam with >>>>> ocamlfind installed via it, this file will contain your Topdirs setup. >>>>> You can try: >>>>> >>>>> let () = >>>>> try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH") >>>>> with Not_found -> () >>>>> ;; >>>>> >>>>> at the top of your script (after hashbang but before directives). >>>>> >>>>> Hope this helps, >>>>> >>>>> David >>>>> >>>> >>>> >>> >>> >>> -- >>> Fabrice LE FESSANT >>> Chercheur en Informatique >>> INRIA Paris Rocquencourt -- OCamlPro >>> Programming Languages and Distributed Systems >>> >> >> > > > -- > Fabrice LE FESSANT > Chercheur en Informatique > INRIA Paris Rocquencourt -- OCamlPro > Programming Languages and Distributed Systems >