Могут ли модули F # быть залатаны? - PullRequest
2 голосов
/ 18 сентября 2010

Быстрый вопрос.Я только что прочитал, что если вы хотите добавить функцию, например, в модуль List, вы можете определить новый модуль List с этой функцией:

module List
  let foo = // ...

Имеет ли это эффект добавления foo к основномуМодуль списка, или вам нужно явно открыть новый List?Первое похоже на «исправление обезьяны» Руби;Я думаю, что последний будет больше похож на методы расширения.

(я бы попробовал это, но я не рядом с компилятором.)

Ответы [ 2 ]

4 голосов
/ 18 сентября 2010

Это очень похоже на пространства имен; они "открыты". То есть у меня может быть два файла или две сборки, которые вносят типы в пространство имен, и затем, если я использую эти файлы или ссылаюсь на эти сборки и говорю

open ThatNamespace

Я вижу объединение всех членов.

3 голосов
/ 18 сентября 2010

Это работает аналогично методам расширения:

module List =
    let doSomething lst v = lst |> List.nth v
...