Hallo alle, so habe ich diese Hausaufgabe in Haskell, wo wir mit dem Nat-Datentyp arbeiten müssen, die nur Zero
und Succ(n)
für eins gibt. So ist man Succ(Zero)
, zwei ist Succ(Succ(Zero))
und so weiter. Wir sollten auch addieren, dass diese Datentypen rekursiv multipliziert werden.Verwendung von Rekursion in Haskell
Eines der Probleme aussehen wie dieses
--Add two natural numbers.
--
-- `>>> add one two`
-- Succ (Succ (Succ Zero))
--
-- `>>> add Zero one == one`
-- True
--
-- `>>> add two two == four`
-- True
--
-- `>>> add two three == add three two`
-- True
--
Mein Problem ist, wenn ich Rekursion mache ich einen Basisfall, aber wie ich es nenne es gibt nur die Fallbasis und nicht besonders Blase zurück oben.
Hilfe oder Erklärung, wie in Haskell mit Mustervergleich Rekursion würde
EDIT erkannt werden: Der Code Ich habe
add :: Nat -> Nat -> Nat
add Zero Zero = Zero
add Zero (Succ i) = Succ(pred i)
add (Succ i) Zero = Succ(pred i)
add (Succ i) (Succ j) = Succ(add i j)
Wo pred eine andere Funktion
pred :: Nat -> Nat
pred Zero = Zero
pred (Succ Zero) = Zero
pred (Succ i) = Succ(pred i)
ist
Zeigen Sie den Code, den Sie bisher haben. – chepner
Wenn es immer nur gibt Ihnen das Ergebnis des Basisfalles, die gerade wiederkehrt wie der Nicht-Basisfall klingt, ohne mit dem Ergebnis, etwas zu tun, aber Sie sollten wirklich Ihren Code zeigen, so können wir sicher sagen. – sepp2k