我正在按照《Real World OCaml》一书来学习 OCaml,许多程序都需要使用 Jane Street Core 库。当我在顶层使用这个核心库中的函数时,它工作得很好。在那里,我只需使用以下命令来打开 Core 库。
$ #use "topfind";;
#thread;;
#camlp4o;;
#require "core.top";;
#require "core.syntax";;
open Core.Std;;
然后我可以在顶层逐行运行这个程序,并且像 String.split 这样的函数可以正常工作。
# let languages = "OCaml,Perl,C++,C";;
val languages : string = "OCaml,Perl,C++,C"
# let dashed_languages =
let language_list = String.split languages ~on:',' in
String.concat ~sep:"-" language_list
;;
val dashed_languages : string = "OCaml-Perl-C++-C"
但是如果我把它们全部放在脚本中,如何让编译器识别核心库呢?因此,如果我在脚本中运行相同的程序:
open Core.Std;;
open Str;;
let languages = "OCaml,Perl,C++,C";;
let dashed_languages =
let language_list = String.split languages ~on:',' in
String.concat ~sep:"-" language_list
;;
然后我编译它:
ocamlopt -o test test.ml
我收到错误:
Error: Unbound module Core
很明显,Core 没有被识别。我无法将 #use 和 #require 命令放入我的脚本中,因为 OCaml 无法识别这些命令。那么我该如何使用Core呢?