ho definito un tipo di dati personalizzato che contiene un singolo campo:Come posso gestire tipi di dati in stile "typedef" con un numero minimo di caratteri?
import Data.Set (Set)
data GraphEdge a = GraphEdge (Set a)
Definire il mio tipo di sente più semanticamente corretto, ma porta ad un sacco di boilerplate in mie funzioni. Ogni volta che voglio utilizzare il built-in Set
funzioni devo scartare il set interno e successivamente Rewrap:
import Data.Set (map)
modifyItemsSomehow :: Ord a => GraphEdge a -> GraphEdge a
modifyItemsSomehow (GraphEdge items) = GraphEdge $ Set.map someFunction items
Questo potrebbe essere migliorata un po ', rendendo un disco, come
import Data.Set (Set, map)
data GraphEdge a = GraphEdge { unGraphEdge :: Set a }
modifyItemsSomehow = GraphEdge . map someFunction . unGraphEdge
ma questo sembra ancora lontano dall'ideale. Qual è il modo più idiomatico per gestire questo tipo di piastra quando si ha a che fare con un tipo di dati definito dall'utente che consiste in un singolo campo?
Qualsiasi motivo si sta utilizzando 'dati' invece di' newtype'? – Carl
@Carl Nope, solo ignoranza :-) – bdesham