F#是否有OCaml t型等效物?
有了OCaml变体,我明白了F#是否有OCaml t型等效物?,f#,F#,有了OCaml变体,我明白了 /* Reason syntax */ module M = { type t = | Foo | Bar; }; 相当多。F#似乎分享了泄漏到父模块问题中的变体,OCaml人员可以使用模块 F#社区是否也做了类似的事情 module M = type MType = | Baz type T = | None | Foo | Bar(MType) 在F#中,为类型和模块指定相同的名称是有效
/* Reason syntax */
module M = {
type t =
| Foo
| Bar;
};
相当多。F#似乎分享了泄漏到父模块问题中的变体,OCaml人员可以使用模块
F#社区是否也做了类似的事情
module M =
type MType = | Baz
type T =
| None
| Foo
| Bar(MType)
在F#中,为类型和模块指定相同的名称是有效的,因此更常见的做法是并排编写类型及其相关模块,如下所示:
type M =
| Foo
| Bar
module M =
let f (m: M) = // ...
以前需要向模块中添加属性[]
,但现在是自动的。在F#中,为类型和模块指定相同的名称是有效的,因此更常见的做法是这样并排编写类型及其相关模块:
type M =
| Foo
| Bar
module M =
let f (m: M) = // ...
以前需要在模块中添加一个属性
[]
,但现在它是自动的。据我所知,这种用法在F#世界似乎并不普遍。考虑到必须编写M.t.Foo
可能会有点尴尬,我认为它对于构建无法从外部访问类型内部的ADT(抽象数据类型)非常有用。就我目前所见,这种用法在F#世界中似乎并不普遍。考虑到必须编写M.t.Foo
可能会有点尴尬,我认为它对于构建无法从外部访问类型内部的ADT(抽象数据类型)非常有用。