Sementara saya tidak berada di komite desain, saya rasa bahwa sintaks record dibentuk agar konsisten dengan sintaksis daftar. Sintaks ekspor modul menggunakan koma juga, satu-satunya tempat nyata di mana tata letak digunakan adalah deklarasi tingkat atas, tempat klausa dan notasi.
Selain itu, diberikan
data Foo = Foo {bar :: Int, baz :: Int}
penulisan
fnord x = x { bar = 4 }
tanpa kawat gigi akan berbenturan dengan sisa sintaks, dan menggunakan tata letak, seperti
fnord x = x
bar = 4
akan membuat sintaks cukup rapuh. Tambahkan "di mana" di tempat yang salah dan kode Anda berarti sesuatu yang sama sekali berbeda.
Jika Anda tidak puas dengan status catatan di Haskell (dan Anda tidak akan sendirian dengan itu), saya sarankan Anda melihat fclabels atau bahkan peretasan typeclass yang rumit seperti HList atau catatan grapefruit (dua yang terakhir tidak menjadi untuk yang lemah hati, tetapi juga sangat kuat)
fclabels akan memungkinkan Anda untuk menulis (yay pointfree)
fnord = setL bar 4
sebaik
getBar = getL bar
di atas itu sebenarnya raison d'etre, yang menyusun label:
data Person = Person { _place :: Place, ... }
data Place = Place { _city :: String, ... }
moveToAmsterdam :: Person -> Person
moveToAmsterdam = setL (city . place) "Amsterdam"