Gibt es eine Möglichkeit, den Konstruktor "Vielleicht" mit Generika auf jedes Datensatzfeld anzuwenden?

Ich habe zwei Datentypen und der zweite ist die Kopie des ersten, aber mit Vielleicht in jedem Feld.

data A = {a :: Int, b :: String}
data B = {c :: Maybe Int, d :: Maybe String}

ibt es eine Möglichkeit, Funktionen zu erstelle

f :: A -> B
g :: B -> A -> A

ohne Wissen über Felder selbst? (wenn der Wert des ersten Arguments nichts istg übernimmt den Standardwert aus dem zweiten Argument)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage