Ich habe eine einfache Art und Funktion unten, aber scheint eine Menge Standard dort, so Wunder, gibt es einen besseren Weg, es zu tun. Meine eigentliche Frage ist, wenn ich weiß, dass die Eingabe vom Typ Fähigkeit ist, also irgendeine der Str/Dex usw., was ist der einfachste Weg, die Ganzzahl daraus zu extrahieren, ohne dass Muster mit jedem übereinstimmen?Haskell Constructor Typ Pattern Matching
data Ability = StrAbi Integer
| DexAbi Integer
| ConAbi Integer
| IntAbi Integer
| WisAbi Integer
| ChaAbi Integer
deriving (Show)
data Modifier = Modifier Integer deriving (Show)
setModifier :: Ability -> (Ability, Modifier)
setModifier [email protected](StrAbi s) = (abi, Modifier $ modifier' s)
setModifier [email protected](DexAbi s) = (abi, Modifier $ modifier' s)
setModifier [email protected](ConAbi s) = (abi, Modifier $ modifier' s)
setModifier [email protected](IntAbi s) = (abi, Modifier $ modifier' s)
setModifier [email protected](WisAbi s) = (abi, Modifier $ modifier' s)
setModifier [email protected](ChaAbi s) = (abi, Modifier $ modifier' s)
Danke, //
Sie könnten ableiten auch 'Functor' . – Reactormonk
du willst also den Fähigkeitstyp abbilden? – pip
Eine andere Option ist 'wo m = Modifikator 's. Am Ende des Blockes. Kombiniere es mit 'wo a = Fähigkeit 's' und zumindest verschiebst du das Boilerplate in Utility-Funktionen, die nur einmal geschrieben werden müssen. – Davislor