我已经安装了顶层服务器,并设置了$ OCAML_TOPLEVEL_PATH。
export OCAML_TOPLEVEL_PATH=/Users/smcho/.opam/system/lib/toplevel
Run Code Online (Sandbox Code Playgroud)
我检查目录是否存在,并且有一个文件topfind。
这是我的~/.ocamlinit文件内容。
#use "topfind"
#camlp4o
#thread
#require "core.top"
#require "core.syntax"
Run Code Online (Sandbox Code Playgroud)
问题是我收到错误消息,说找不到topfind。
> ocaml
OCaml version 4.02.1
Cannot find file topfind.
Unknown directive `camlp4o'.
#
Run Code Online (Sandbox Code Playgroud)
使用“ ustop”,我没有错误信息。
可能是什么问题?
这是我的ocaml环境设置。
> opam config env
CAML_LD_LIBRARY_PATH="/Users/smcho/.opam/system/lib/stublibs:/usr/local/lib/ocaml/stublibs"; export CAML_LD_LIBRARY_PATH;
OPAMUTF8MSGS="1"; export OPAMUTF8MSGS;
MANPATH=":/Users/smcho/.opam/system/man"; export MANPATH;
MAKELEVEL=""; export MAKELEVEL;
MAKEFLAGS=""; export MAKEFLAGS;
PERL5LIB="/Users/smcho/.opam/system/lib/perl5:"; export PERL5LIB;
OCAML_TOPLEVEL_PATH="/Users/smcho/.opam/system/lib/toplevel"; export OCAML_TOPLEVEL_PATH;
PATH="..."; export PATH;
Run Code Online (Sandbox Code Playgroud) 在OCaml toplevel内我试图打印当前目录.
即
# Filename.current_dir_name;;
Run Code Online (Sandbox Code Playgroud)
返回
- : string = "."
Run Code Online (Sandbox Code Playgroud)
这不是很有用.
显示当前目录的完整路径所需的toplevel命令是什么?
我正在做一个免费课程.下面的ocaml代码在我"make"时编译,但是一旦我试图把它放到顶层就会抱怨.为什么?
let main () =
(* Parsing arguments *)
let f_name = ref "" in
Arg.parse [ ] (fun s -> f_name := s) "Mini-Java analyzer";
(* Parsing of the source file *)
let simple_java_prog =
if String.compare !f_name "" = 0 then failwith "no program file given";
Localizing.current_file_name := !f_name;
let f_desc = open_in !f_name in
let lexbuf = Lexing.from_channel f_desc in
let java_prog =
try Java_parser.program Java_lexer.token lexbuf
with
| e ->
Printf.printf "Exception during parsing: %s\n"
(Printexc.to_string …Run Code Online (Sandbox Code Playgroud) 我已经创建了一个包含很多元素的列表,ocaml我想看看里面有什么,但ocaml只是向我展示了这样的一小部分:[e1,e2,e3;...].如何配置ocaml显示所有内容?
我如何引用 OCaml 的顶级 repl 中最后一个评估的表达式?
即 JavaScript 使用$_,python 使用_,haskell ghci 使用it。
我已经安装opam,运行opam init,运行opam switch 4.06.0它创建了一个4.06.0内部目录~/.opam,运行"EVAL opam confing env"其中出口$OCAML_TOPLEVEL_PATH为~/.opam/4.06.0/lib/toplevel除其他事项外,当启动ocaml我得到了可怕的:
$ ocaml
OCaml version 4.06.0
Cannot find file topfind.
Unknown directive `camlp4o'.
#
Run Code Online (Sandbox Code Playgroud)
我已经看过这个了,这一点都没有解决我的问题而且我的智慧结束了(第一次设置OCaml).这是我的~/.ocamlinit:
(* Added by OPAM. *)
let () =
try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
with Not_found -> ()
;;
#use "topfind"
#camlp4o
#thread
#require "core.top"
#require "core.syntax"
Run Code Online (Sandbox Code Playgroud)
编辑:看起来我没有安装core,安装core解决了,但现在我得到的一系列导入诊断:
Exception:
Invalid_argument
"The ocamltoplevel.cma library from …Run Code Online (Sandbox Code Playgroud) 在 my 中~/.ocamlinit,我有一些指令:
#use "topfind"
#thread
#require "core.top"
Run Code Online (Sandbox Code Playgroud)
结果,每次 OCaml 顶层(即ocaml)启动时,我都会看到这个巨大的文本墙:
OCaml version 4.02.3
Findlib has been successfully loaded. Additional directives:
#require "package";; to load a package
#list;; to list the available packages
#camlp4o;; to load camlp4 (standard syntax)
#camlp4r;; to load camlp4 (revised syntax)
#predicates "p,q,...";; to set these predicates
Topfind.reset();; to force that packages will be reloaded
#thread;; to enable threads
/usr/lib/ocaml/threads: added to search path
/usr/lib/ocaml/unix.cma: loaded
/usr/lib/ocaml/threads/threads.cma: loaded
/usr/lib/ocaml/compiler-libs: added to search …Run Code Online (Sandbox Code Playgroud)