जब मैं डिज़ाइन कमिट पर नहीं था, तो मुझे लगता है कि रिकॉर्ड सिंटैक्स को सूची सिंटैक्स के अनुरूप होना चाहिए। मॉड्यूल एक्सपोर्ट सिंटैक्स कॉमा का उपयोग करता है, भी, एकमात्र वास्तविक स्थान जहां लेआउट का उपयोग किया जाता है, शीर्ष स्तर की घोषणाएं होती हैं, जहां क्लॉस और नोटेशन होते हैं।
उसके ऊपर, दिया गया
data Foo = Foo {bar :: Int, baz :: Int}
लिख रहे हैं
fnord x = x { bar = 4 }
ब्रेसिज़ के बिना वाक्य रचना के बाकी हिस्सों के साथ टकराव होगा, और लेआउट का उपयोग करना, जैसे
fnord x = x
bar = 4
वाक्यविन्यास काफी भंगुर बना देगा। गलत जगह पर "जहां" जोड़ें और आपके कोड का मतलब कुछ अलग है।
यदि आप हास्केल में रिकॉर्ड्स की स्थिति से खुश नहीं हैं (और आप उसके साथ अकेले नहीं होंगे), तो मैं आपको सलाह देता हूं कि आप फीकैबल्स पर नज़र डालें या यहां तक कि एचएलस्ट या ग्रेपफ्रूट -रिकॉर्ड्स (जैसे बाद के दो नहीं) के बारे में लिखें। दिल के बेहोश के लिए, लेकिन यह भी शक्तिशाली
fclabels आपको लिखने के लिए अनुमति देगा (yay पॉइंटफ्री)
fnord = setL bar 4
साथ ही साथ
getBar = getL bar
इसके शीर्ष पर वास्तविक राइसन डीट्रे है, जो लेबल की रचना कर रहा है:
data Person = Person { _place :: Place, ... }
data Place = Place { _city :: String, ... }
moveToAmsterdam :: Person -> Person
moveToAmsterdam = setL (city . place) "Amsterdam"