从其他文件加载ocaml中的类型

时间:2018-12-14 00:42:35

标签: file types module ocaml

我正在尝试使用另一个文件(tokenTypes.ml)中的类型:

keydown()

我正在尝试在另一个文件(词法分析器)中使用它,第一种情况效果很好:

sounds()

我可以使用定义的每种令牌类型,但是当我尝试创建类型令牌的新实例时,编译器会说:

  

构造函数Negation不属于TokenTypes.token类型

所以我必须使用ocamlopt -c tokenTypes.ml创建一个模块,然后在open的代码中使用它,如下所示:

pygame.init()
time.sleep(10)
def sounds():
   #some action
   def keydown()...

sounds()

有没有不使用该模块的方法?我想退出开放部分,只使用源代码,而不使用模块。

Help pls:c

1 个答案:

答案 0 :(得分:0)

OCaml顶层(和utop)具有包含文件的功能:

$ cat m.ml
type abc = A | B | C
$ ocaml
        OCaml version 4.06.1

# #use "m.ml";;
type abc = A | B | C
# let x = A;;
val x : abc = A
#

但是,这只是顶层和utop的功能。这不是OCaml语言的功能:

$ cat c.ml
#use "m.ml"

let x = A
$
$ ocamlopt -c c.ml
File "c.ml", line 1, characters 0-1:
Error: Syntax error

您需要使用模块来完成所需的操作。当您习惯使用模块时,它们真的很棒:-)