Я не совсем понимаю, почему это работает:Записи в PureScript
module Records where
type Element e = { element :: String, label :: String | e }
type Sel = (value :: Number, values :: [Number])
type Select = Element Sel
в то время как это говорит Cannot unify # * with *
.
module Records where
type Element e = { element :: String, label :: String | e }
type Sel = { value :: Number, values :: [Number] }
type Select = Element Sel
(Обратите внимание, что '()' вокруг правой стороны Sel вместо того, чтобы '{}'.)
Я прочитал здесь https://leanpub.com/purescript/read#leanpub-auto-objects-and-rows что forall r. { firstName :: String, lastName :: String | r }
desugars к forall r. Object (firstName :: String, lastName :: String | r)
Я все еще немного смущен, почему вы не можете использовать рекордный сахар для продления записей.
спасибо. Это все объясняет :) Я думаю, было бы очень приятно иметь запись о записях в вики. Как то, что вводит '{value :: Number, values :: [Number]}' desugars. И пример того, как вы продлеваете запись, будет действительно полезен. Еще раз спасибо – Archaeron
Нет проблем. Не стесняйтесь копировать это на wiki, если хотите. –