मुझे लगता है कि एक भी फ़ील्ड में कोई कस्टम डेटा प्रकार परिभाषित:मैं "टाइपपीफ" -स्टाइल डेटा प्रकारों से कम से कम बॉयलरप्लेट के साथ कैसे निपट सकता हूं?
import Data.Set (Set)
data GraphEdge a = GraphEdge (Set a)
को परिभाषित करना मेरे अपने प्रकार अधिक शब्दार्थ सही लगता है लेकिन यह मेरी कार्यों में बॉयलरप्लेट का एक बहुत की ओर जाता है। किसी भी समय मैं चाहता हूँ निर्मित Set
कार्यों मैं आंतरिक सेट उपहार में और बाद में करने के लिए है का उपयोग करने के लिए यह हर दूसरे पट्टी बदल:
import Data.Set (map)
modifyItemsSomehow :: Ord a => GraphEdge a -> GraphEdge a
modifyItemsSomehow (GraphEdge items) = GraphEdge $ Set.map someFunction items
यह एक रिकार्ड बनाकर थोड़ा सुधार किया जा सकता,
import Data.Set (Set, map)
data GraphEdge a = GraphEdge { unGraphEdge :: Set a }
modifyItemsSomehow = GraphEdge . map someFunction . unGraphEdge
की तरह लेकिन यह अभी भी आदर्श से बहुत दूर लगता है। उपयोगकर्ता द्वारा परिभाषित डेटा प्रकार से निपटने के दौरान इस तरह के बॉयलरप्लेट को संभालने का सबसे बेवकूफ तरीका क्या है जिसमें एक फ़ील्ड होता है?
किसी भी कारण से आप 'newtype' के बजाय' डेटा' का उपयोग कर रहे हैं? – Carl
@ करल नोप, बस अज्ञानता :-) – bdesham