В документах: https://bucklescript.github.io/docs/en/object.html есть примеры записи с изменяемыми и необязательными полями. Когда я пытаюсь использовать оба, это не удается:
Компилирует:
type person = {
mutable age: int;
job: string;
} [@@bs.deriving abstract]
let joe = person ~age:20 ~job:"teacher"
let () = ageSet joe 21
Добавляем атрибут [@bs.optional]
:
type person = {
mutable age: int;
job: string [@bs.optional];
} [@@bs.deriving abstract]
let joe = person ~age:20 ~job:"teacher"
let () = ageSet joe 21
Сообщение об ошибке:
Строка 7, 20: Это выражение имеет тип unit -> person, но ожидалось выражение типа person
Строка 7 — это строка ageSet
.
Я что-то пропустил здесь?