如何在OCaml中使用#use指令包含其他源文件? 我是一个新手,我想把一些代码放到另一个文件中,比如说,代码> fo.mL,就像C++或Python所做的一样。但这部分代码本身并不构成模块

如何在OCaml中使用#use指令包含其他源文件? 我是一个新手,我想把一些代码放到另一个文件中,比如说,代码> fo.mL,就像C++或Python所做的一样。但这部分代码本身并不构成模块,ocaml,Ocaml,我在主源文件的头部包含了#use“foo.ml”。但是当我使用ocamlbuild构建项目时,它会报告I/O错误:“foo.ml:没有这样的文件或目录”。但是显然foo.ml在当前的工作目录中 我想知道是否有人知道如何在OCaml中实现这一目标并让我的项目得以构建,或者这在OCaml中不是一个惯例?欢迎任何建议。#使用“foo.ml”是交互式顶层的指令,它不适用于编译器 如果您想将代码拆分为不同的文件(这是一个好主意,在OCaml中强烈推荐),那么您应该使用模块系统。 为什么你说你的代码没有形成

我在主源文件的头部包含了
#use“foo.ml”
。但是当我使用
ocamlbuild
构建项目时,它会报告
I/O错误:“foo.ml:没有这样的文件或目录”
。但是显然
foo.ml
在当前的工作目录中

我想知道是否有人知道如何在OCaml中实现这一目标并让我的项目得以构建,或者这在OCaml中不是一个惯例?欢迎任何建议。

#使用“foo.ml”
是交互式顶层的指令,它不适用于编译器

如果您想将代码拆分为不同的文件(这是一个好主意,在OCaml中强烈推荐),那么您应该使用模块系统。
为什么你说你的代码没有形成一个模块?如果您的代码只包含一次性使用的函数,则它们应该与使用它们的函数位于同一文件中。如果您的代码是可重用的,那么它将形成一个模块。

正如Thomash已经说过的,对于您的问题来说,这可能是错误的解决方案

如果您仍然需要它,您必须使用camlp4或类似的外部工具

pa_宏示例(随ocaml提供):

test2.ml:

let arg = "Hello World"
test.ml:

INCLUDE "test2.ml"
let () =
   print_endline arg
汇编:

 ocamlfind ocamlc -syntax camlp4o -package camlp4 -ppopt pa_macro.cmo test.ml -o test

谢谢,我将接受你的做法。谢谢。对camlp4很感兴趣。