我正在尝试运行以下非常简单的代码:
open Str
print (Str.first_chars "testing" 0)
但是,它给出了以下错误:
$ ocaml testing2.ml
File "testing2.ml", line 2, characters 0-5:
Error: Syntax error
错误消息中没有更多详细信息。
同样的错误print_endline
;或者即使没有打印命令。因此,错误部分是:Str.first_chars "testing" 0
来自here的有关上述功能的文档如下:
val first_chars : 字符串 -> int -> 字符串
first_chars sn 返回 s 的前 n 个字符。这与 Str.string_before 的功能相同。
在第二个语句的末尾添加;
或;;
没有任何区别。
上述代码的正确语法是什么。
编辑: 使用@EvgeniiLepikhin 建议的以下代码:
open Str
let () =
print_endline (Str.first_chars "testing" 0)
错误是:
File "testing2.ml", line 1:
Error: Reference to undefined global `Str'
并使用此代码:
open Str;;
print_endline (Str.first_chars "testing" 0)
错误是:
File "testing2.ml", line 1:
Error: Reference to undefined global `Str'
在上面的代码中只使用print
命令(而不是print_endline
),错误是:
File "testing2.ml", line 2, characters 0-5:
Error: Unbound value print
注意,我的 Ocaml 版本是:
$ ocaml -version
The OCaml toplevel, version 4.02.3
我认为Str
应该是内置的,因为 opam 没有找到它:
$ opam install Str
[ERROR] No package named Str found.
我还尝试了@glennsl 评论中建议的以下代码:
#use "topfind"
#require "str"
print (Str.first_chars "testing" 0)
但这也同样简单syntax error
。