ReasonML 循环依赖
ReasonML cycle dependency
我正在研究基于 this project 绑定到 leafletjs 的 bucklescript。
使用传单,地图具有添加图层的功能,图层具有将自身添加到地图的功能。
这就是我想用 ReasonML 实现的目标:
module Map = {
type t;
[@bs.send] external addLayer : (t, Layer.t) => t = "addLayer";
};
module Layer = {
type t;
[@bs.send] external addTo : Map.t => unit = "addTo";
};
不幸的是,我收到一个 未绑定模块层 错误。
如何让编译器识别后面描述的类型?
选项 1:在通用模块中定义类型并为其取别名:
type map;
type layer;
module Map = {
type t = map;
[@bs.send] external addLayer : (t, layer) => t = "addLayer";
};
module Layer = {
type t = layer;
[@bs.send] external addTo : map => unit = "addTo";
};
选项 2:使模块相互递归:
module rec Map : {
type t;
[@bs.send] external addLayer : (t, Layer.t) => t = "addLayer";
} = {
type t;
[@bs.send] external addLayer : (t, Layer.t) => t = "addLayer";
}
and Layer : {
type t;
[@bs.send] external addTo : Map.t => unit = "addTo";
} = {
type t;
[@bs.send] external addTo : Map.t => unit = "addTo";
};
我正在研究基于 this project 绑定到 leafletjs 的 bucklescript。
使用传单,地图具有添加图层的功能,图层具有将自身添加到地图的功能。
这就是我想用 ReasonML 实现的目标:
module Map = {
type t;
[@bs.send] external addLayer : (t, Layer.t) => t = "addLayer";
};
module Layer = {
type t;
[@bs.send] external addTo : Map.t => unit = "addTo";
};
不幸的是,我收到一个 未绑定模块层 错误。
如何让编译器识别后面描述的类型?
选项 1:在通用模块中定义类型并为其取别名:
type map;
type layer;
module Map = {
type t = map;
[@bs.send] external addLayer : (t, layer) => t = "addLayer";
};
module Layer = {
type t = layer;
[@bs.send] external addTo : map => unit = "addTo";
};
选项 2:使模块相互递归:
module rec Map : {
type t;
[@bs.send] external addLayer : (t, Layer.t) => t = "addLayer";
} = {
type t;
[@bs.send] external addLayer : (t, Layer.t) => t = "addLayer";
}
and Layer : {
type t;
[@bs.send] external addTo : Map.t => unit = "addTo";
} = {
type t;
[@bs.send] external addTo : Map.t => unit = "addTo";
};