Ho un record con campi di tipi diversi e una funzione applicabile a tutti questi tipi. Come un piccolo (stupido) Esempio:Applicazione sistematica di una funzione a tutti i campi di un record haskell
data Rec = Rec { flnum :: Float, intnum :: Int } deriving (Show)
Say, voglio definire una funzione che aggiunge due record per-campo:
addR :: Rec -> Rec -> Rec
addR a b = Rec { flnum = (flnum a) + (flnum b), intnum = (intnum a) + (intnum b) }
C'è un modo per esprimere questo senza ripetere l'operazione per ogni campo (ci possono essere molti campi nel record)?
In realtà, ho un record composto esclusivamente da campi Maybe
e desidero combinare i dati effettivi con un record contenente i valori predefiniti per alcuni dei campi, da utilizzare quando i dati effettivi erano Nothing
.
(immagino che dovrebbe essere possibile con il modello Haskell, ma io sono più interessato a un'implementazione "portatile".)
Attualmente sto facendo questa cosa 'chiusura'; è ancora un sacco di duplicati. – crosser