Ich bin neu bei Haskell und würde gerne wissen, ob es möglich ist, eine Funktion zu definieren, die nur für eine Teilmenge eines bereits existierenden Typs definiert ist, ohne einen neuen Typ definieren zu müssen.Kann eine Funktion für eine Teilmenge eines vorhandenen Typs definiert werden?
Beispiel: Ich möchte eine Funktion erstellen, die nur gerade ganze Zahlen (oder sogar natürliche Zahlen usw.) akzeptiert und zurückgibt, z. diese Zahl quadriert, wie:
Die oben genannten zwei Zeilen funktionieren natürlich nicht.
Ich weiß, dass ich es so schreiben könnte:
squared' :: Integer -> Integer
squared' n
| (even n) = n*n
| otherwise = error "n is not even!"
oder etwas ähnliches, aber ich möchte wissen, ob so etwas wie das nicht-funktionierendes Beispiel ist möglich, wie gut.
Ich hoffe, dass diese Frage nicht ganz dumm ist (oder war bereits beantwortet), aber ich weiß es wirklich nicht viel Haskell noch (so Suche nach einer Antwort wurde Art als auch von schwer) ...
es nicht einfach in Haskell – viorior