F#是否具有等效的OCaml类型t?

时间:2018-11-28 07:53:41

标签: f#

有了OCaml变体,我明白了

/* Reason syntax */
module M = {
  type t =
    | Foo
    | Bar;
};

有点。 F#似乎分享了泄漏到父模块问题中的变体,OCaml的人们都在使用模块。

F#社区是否做类似的事情?

module M =
    type MType = | Baz
    type T =
      | None
      | Foo
      | Bar(MType)

1 个答案:

答案 0 :(得分:3)

在F#中,为类型和模块赋予相同的名称是有效的,因此更常见的是,像这样并排编写类型及其相关模块:

type M =
    | Foo
    | Bar

module M =

    let f (m: M) = // ...

过去必须在模块中添加属性[<CompilationRepresentation (CompilationRepresentationFlags.ModuleSuffix)>],但这是自动的。