यदि मेरे पास लेंस के साथ एक रिकॉर्ड प्रकार है, तो क्या अंतर्निहित रिकॉर्ड एक्सेसर्स का उपयोग किए बिना एक नया रिकॉर्ड बनाना संभव है?क्या लेंस का उपयोग करके एक नया रिकॉर्ड बनाना संभव है?
{-# LANGUAGE TemplateHaskell #-}
import Control.Lens
import Control.Lens.TH
data Foo = Foo { _s :: String
, _b :: Bool
} deriving (Show, Eq)
makeLenses ''Foo
मैं Foo
Data.Default
का एक उदाहरण बना सकता है और फिर लेंस के साथ def
modifiy, लेकिन सभी रिकॉर्ड प्रकारों समझदार चूक होगा। नियंत्रण करता है। लेंस के पास ऐसा करने का अपना तरीका है?
आप हमेशा डिफ़ॉल्ट रूप से 'Foo {}' का उपयोग कर सकते हैं, सभी फ़ील्ड को अपरिभाषित छोड़कर। –
धन्यवाद! मुझे यह भी पता नहीं था कि आप वहां खेतों को छोड़ सकते हैं। मैं बस * माना * यह एक संकलन त्रुटि होगी। –
ध्यान दें कि यदि 'Foo' में सख्त फ़ील्ड हैं तो यह काम नहीं करेगा। – shachaf