我正在努力正确设置我的 OCaml 环境以使用 ppx 派生映射、折叠和迭代,如下所述: https ://github.com/ocaml-ppx/ppx_deriving#plugins-iter-map-and-fold
我的最小示例在这里(我正在使用 Base,因为这是我在更广泛的项目中使用的库):
open Base;;
type data = Row of float array | Dim of data array
[@@deriving iter, map, fold, show];;
let t = Row [|2.;2.|];;
pp_data Caml.Format.std_formatter t;;
map_data (fun x -> x +. 1.) t;;
pp_data Caml.Format.std_formatter t;;
下面的代码是用
ocamlfind ocamlc -package base -package ppx_deriving.iter -package ppx_deriving.map -package ppx_deriving.fold -package ppx_deriving.show -linkpkg -g test.ml && ./a.out
;编译的 我收到一个编译错误,指出map_data
类型为data -> data
. 但是根据文档和我的常识,map
得到一个函数和一个可映射的结构,这似乎不是这里的情况。在 utop 中测试这个给了我同样的错误。
有什么我想念的吗?
先感谢您 :)