Reputation: 2561
I am trying to follow along with Real World OCaml by setting up opam
, utop
, and the Core modules as well. I've followed these directions with some success. In particular, when I run utop
without specifying the file to load, I can load Core with no issues:
[dswain@Dupree scratch]$ utop
Welcome to utop version 1.12 (using OCaml version 4.01.0)!
Findlib has been successfully loaded. Additional directives:
...
utop # open Core;;
utop #
So far so good. Now if I attempt to load a script from the command line with the same code:
[dswain@Dupree scratch]$ cat test.ml
open Core.Std;;
[dswain@Dupree scratch]$ utop test.ml
File "test.ml", line 1, characters 0-13:
Error: Unbound module Core
[dswain@Dupree scratch]$
I assume this is a configuration mistake I've made somewhere, but I'm not quite sure where.
I've attempted to reinstall ocaml
, opam
, utop
, and core
to no avail. I've got the following config changes that I'm aware that opam init
made during setup:
~/.ocamlinit:
#use "topfind";;
#thread;;
#camlp4o;;
#require "core.top";;
#require "core.syntax";;
~/.bash_profile
# OPAM configuration
. /home/dswain/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true
eval `opam config env`
I'm running Arch Linux, and followed the steps to install opam
via the AUR with no issues I'm aware of. I was also able to build & install all of the packages from the installation instructions without any errors I know of.
Upvotes: 0
Views: 4545
Reputation: 35210
This is because utop executes a script-file before it runs .ocamlinit
file. I'm not sure whether it is a bug or a feature, but that is how the code is written. Indeed, most users runs utop from emacs and send pieces of code to utop with C-c C-s
.
If you're not comfortable with emacs, I can suggest to use the following workflow:
#use "your_file.ml";;
2
.Upvotes: 2