F # Модули являются просто статическими классами при компиляции.
Используя отражение, вы сможете получить эти значения примерно так:
module Lets =
type Dummy = | Dummy
let meter = { Name = "meter"; Abbreviation = "m"; Value = 1.0 }
let millimeter = { Name = "millimeter"; Abbreviation = "mm"; Value = 1e-3 }
let t = typeof<Lets.Dummy>.DeclaringType
t.GetProperties() |> Array.map(fun p -> p.GetValue(null, null) :?> Unit)
Сложно получить тип модуля, но этот трюк сделает это за вас.
EDIT:
Обновлено для приведения непосредственно к Unit
.
Приведение, как показано, небезопасно и будет выбрасываться, если GetValue
не возвращает тип Unit
.
Дополнительно unit
- это тип в F #, может быть, будет понятнее использовать другое имя.