Oltre alla risposta di Telastyn:
Maybe
mai "silenziosamente fallisce". Al contrario di null, che potrebbe essere il confronto tra l'OP, una funzione Haskell che può restituire Nothing
deve farlo esplicitamente nel suo tipo.
Per confronto: un metodo che restituisce String
in Java potrebbe restituire una stringa o null, e non puoi dirlo semplicemente osservando il suo tipo:
public String myFunc(int x) { /* do something, might return null! */ }
In Haskell una funzione che restituisce un String
ha un tipo simile a questo:
myFunc :: Int -> String
Sai che non può restituire Nothing
, perché se fosse così, il suo tipo sarebbe:
myFunc :: Int -> Maybe String
Questo significa che Nothing
non può mai insidiarsi e "causare mal di testa lungo la linea"!