Ich habe einen Datensatz mit Feldern unterschiedlicher Typen und eine Funktion, die für alle diese Typen gilt. Als kleines (albern) Beispiel:Systematische Anwendung einer Funktion auf alle Felder eines Haskell Datensatzes
data Rec = Rec { flnum :: Float, intnum :: Int } deriving (Show)
Sprich, ich mag eine Funktion definieren, die zwei Datensätze pro-Feld fügt hinzu:
addR :: Rec -> Rec -> Rec
addR a b = Rec { flnum = (flnum a) + (flnum b), intnum = (intnum a) + (intnum b) }
Gibt es eine Möglichkeit, dies zum Ausdruck zu bringen, ohne den Betrieb zu wiederholen für jedes Feld (es kann viele Felder im Datensatz geben)?
In Wirklichkeit habe ich einen Datensatz ausschließlich aus Maybe
Felder besteht, und ich möchte die tatsächlichen Daten mit einem Datensatz mit Standardwerten für einige der Felder kombinieren, verwendet werden, wenn die tatsächlichen Daten Nothing
war.
(Ich denke, es mit Vorlage Haskell möglich sein soll, aber ich bin mehr daran interessiert, in einer „tragbaren“ Implementierung.)
ich zur Zeit machte diese 'Schließung' Sache; es ist immer noch eine Menge Doppelarbeit. – crosser