Zum Beispiel, ich habeWie man einzelne Werte in großen Objekten auf elegante Weise "ändert"?
data ShipDesign = ShipDesign {
offense :: Offense
, defense :: Defense
, maxHealth :: Integer
, repairRate :: Integer
, stealth :: Integer
, radar :: Integer
, speed :: Integer
, shipType :: String
...
}
Jetzt möchte ich, um die Verteidigung ändern. Die bekannte Art und Weise, dies zu tun ist:
changeDefense :: (Defense -> Defense) -> ShipDesign -> ShipDesign
changeDefense fDef [email protected](ShipDesign o d m rr s r sp st ...) = ShipDesign o (fDef d) m rr s r sp st ...
, die nicht elegant ist. Besonders in Spielen ist es üblich, nur ein paar Werte pro Schritt zu ändern.
Meine Frage ist: Gibt es eine Bibliothek, Design-Muster oder eine andere Möglichkeit, einen einzelnen Wert auf eine elegante Art und Weise zu ändern?
Eine Alternative ist es, direkt in Objektive zu springen, da sie (zumindest meiner Meinung nach) eine viel funktionellere Lösung für das Problem bieten als eine spezielle Syntax. – kqr