【发布时间】:2011-03-11 00:25:24
【问题描述】:
我正在编写一个程序,它解析用某种虚构语言编写的脚本并使用该脚本进行一些计算。这种语言有一个特殊的结构,用于调用'a -> bool 类型的外部OCaml 函数。所以,在中间我们可能有的语言
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吗?)
【问题讨论】:
标签: compiler-construction ocaml dynamic-loading camlp4