记录可以有大写字段吗?

Can records have capitalized fields?

在纯脚本中,{foo :: Foo} 脱糖为 Record ("foo" :: Foo),据我所知。我可以做类似 Record ("F" :: Foo) 的东西吗?这在记录访问语法中看起来如何? thing.F 在句法上是否有效?

引用字段正是这样做的方法,两种类型都是:

type MyRecord = { "Usually impossible field name" :: Boolean }

在访问器/模式中:

make :: Boolean -> MyRecord
make = { "Usually impossible field name": _ }

get :: MyRecord -> Boolean
get = _."Usually impossible field name"

update :: MyRecord -> Boolean -> MyRecord
update = _ { "Usually impossible field name" = _ }

通过这种方式引用字段,您可以使用大写字母、符号、数字等任意命名记录字段

这有点类似于 JavaScript 中的 obj["property"],但是您只能对 属性 名称使用字符串文字,而不是任意值。