Есть ли у F # эквивалент OCaml типа t? - PullRequest
0 голосов
/ 28 ноября 2018

С вариантами 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 голосов
/ 28 ноября 2018

В F # допустимо присвоить типу и модулю одно и то же имя, поэтому чаще пишут тип и связанный с ним модуль бок о бок, например так:

type M =
    | Foo
    | Bar

module M =

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

Используется длядля этого необходимо добавить атрибут [<CompilationRepresentation (CompilationRepresentationFlags.ModuleSuffix)>] в модуль, но теперь он автоматический.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...