I dunno if this is possible, but: if I use Dynlink, can I later load
toplevellib.cma, and use it like normal? At the moment I get undefined
reference to global 'Toploop'.
Jonathan
_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs
I've just made a small test case to demonstate:
test.ml:
open Dynlink
let () = try
print_endline "init";
Dynlink.init ();
print_endline "allowing unsafe modules";
Dynlink.allow_unsafe_modules true;
print_endline "loading toplevellib.cma";
Dynlink.loadfile "/usr/local/lib/ocaml/toplevellib.cma";
print_endline "loading topstart.cmo";
Dynlink.loadfile "/usr/local/lib/ocaml/topstart.cmo";
(* now the ocaml toplevel should be running *)
with Dynlink.Error error -> print_endline (Dynlink.error_message error);;
To compile: ocamlc -o test -linkall dynlink.cma test.ml
Running:
colinux:~/test# ./test
init
allowing unsafe modules
loading toplevellib.cma
loading topstart.cmo (shouldn't return)
Objective Caml version 3.09.2
# let s = "hello world";;
Reference to undefined global `Toploop'
# exit 0;;
colinu:~/test#
As you can see, it can run functions fine (e.g. calling
Pervasives.exit), but let bindings fail.
I know that a module loaded via Dynlink.loadfile can call functions
defined by other modules loaded by Dynlink.loadfile before it (I
actually do this), so why can't the toplevel access these? It can only
access those of the original program from my testing.
Turns out it was a double initialisation problem as dynlink &
toplevellib share some modules.
Best
San
Jonathan Roewen a écrit :
None that I know of. An ocaml distribution puts a couple of the .cmi
files in the ocaml lib dir, so you could examine the interfaces via
the toplevel...
I remember a mailing post detailing how to implement something similar
to pythons eval using the toplevel.
http://alan.petitepomme.net/cwn/2004.04.13.html#2