Haskell kennt kein null. Ein Wert, der fehlen kann, hat den Typ Maybe a (Just wert oder Nothing). Ergebnisse, die fehlschlagen können, mit Fehlertext: Either e a (Left fehler oder Right wert). Du packst sie mit Pattern Matching oder Funktionen wie maybe und fmap aus.
Der Compiler erzwingt damit, dass du den Fehlerfall bedenkst.
import Text.Read (readMaybe)
teile :: Double -> Double -> Either String Double
teile _ 0 = Left "Division durch null"
teile a b = Right (a / b)
main :: IO ()
main = do
print (readMaybe "42" :: Maybe Int) -- Just 42
print (readMaybe "abc" :: Maybe Int) -- Nothing
case teile 10 4 of
Left fehler -> putStrLn fehler
Right x -> print x -- 2.5
print (fmap (+ 1) (Just 5)) -- Just 6Merke
Maybe:Just wertoderNothingEither:Left fehleroderRight wert- Kein
nullin Haskell
Aufgabe
Schreibe `sichereWurzel :: Double -> Maybe Double`, die bei negativen Zahlen `Nothing` liefert.