Используйте атрибут []. Это делает магию, которую вы ищете. Кроме того, размещение литерального атрибута в значении, таком как строка, позволяет использовать его при сопоставлении с образцом. Например:
// BAD - introduces new value named 'Name'
let Name = "Chris Smith"
match Console.ReadLine() with
| Name -> printfn "You entered my name! %s" Name
| _ -> printfn "You didn't enter my name"
// Good - uses the literal value, matches against the value Name
[<Literal>]
let NameLiteral = "Chris Smith"
match Console.ReadLine() with
| NameLiteral -> "You entered my name!"
| _ -> printfn "You didn't enter my name.
Редактировать: я вижу, что вопрос касается того, как поместить их в пользовательские классы (а не в модули). Я не знаю, можете ли вы открыть публичное поле const / public для чтения только в F #, я посмотрю на него.