Wie kann ich diese Aufgabe mit Haskell lösen?
Ich brauche Hilfe bei folgender Aufgabe.
Schreiben Sie eine Funktion, die überprüft ob ein eingegebenes Zeichen eine Ziffer ist.
(a) Durch direktes Angeben eines Booleschen Ausdrucks
(b) Verwenden Sie Pattern-Matching
(c) Verwenden Sie Guards
1 Antwort
a) Du brauchst nur schauen, ob das Zeichen mit einem der Zeichen übereinstimmt, welche die Ziffern 0-9 darstellen. Für den boolschen Ausdruck benötigst du Operatoren (Vergleichsoperatoren, logische Operatoren).
b) Hierfür reichen mehrere Funktionsdefinitionen, die jeweils ein Zeichen prüfen.
Ich zeige lediglich ein Vergleichsbeispiel:
isElementaryArithmeticOperator :: Char -> Bool
isElementaryArithmeticOperator '+' = True
isElementaryArithmeticOperator '-' = True
isElementaryArithmeticOperator '/' = True
isElementaryArithmeticOperator '*' = True
isElementaryArithmeticOperator _ = False
Der Unterstrich symbolisiert jedes beliebige Zeichen.
c) Das kann man ähnlich wie in b) lösen, mit dem Unterschied, dass nur eine Funktionsdefinition ausreicht und die Syntax ein bisschen anders aussieht.
Ich zeige erneut nur ein Vergleichsbeispiel:
isEven :: Int -> Bool
isEven number | number `mod` 2 == 0 = True
| otherwise = False
Jeder Case wird mit einem | angeführt. Wenn keiner der Fälle eintrifft, wird der otherwise-case ausgeführt.