我正在编写一个程序,它解析用某种虚构语言编写的脚本并使用该脚本进行一些计算。这种语言有一个特殊的结构,用于调用 类型的外部 OCaml 函数'a -> bool
。所以,在我们可能拥有的语言中间
blah blah function (foo 45) blah blah
我希望解析器使用构造函数,例如
OCamlFunction of ('a -> bool) * 'a
将该位解析为值
OCamlFunction (foo,45)
其中“foo”是用户必须在单独的 .ml 文件中提供的函数,解析器事先不知道该函数;只有定义了“foo”的 OCaml 文件的名称才会在运行时传递给解析器。因此,我需要定义一个 string-> 类型的函数,('a->bool)
它采用某个函数的名称并返回该函数。
我的问题是:
(1) 我假设代码的动态加载应该使用DynLink.loadfile。这是要走的路吗?
(2) 如何从函数“foo”的标识符中访问函数?(这会带我去camlp5吗?)