Мне известны частичные обновления таких записей, как:
data A a b = A { a :: a, b :: b }
x = A { a=1,b=2 :: Int }
y = x { b = toRational (a x) + 4.5 }
Существуют ли уловки для выполнения только частичной инициализации, создания типа подзаписи или (де) сериализации для подзаписи?
В частности, я обнаружил, что первая из этих строк работает, а вторая - нет:
read "A {a=1,b=()}" :: A Int ()
read "A {a=1}" :: A Int ()
Вы всегда можете массировать такой ввод с помощью регулярного выражения, но мне любопытно, какие существуют варианты, подобные Haskell.