Qual è il vantaggio del costruttore Nothing in Haskell?

3

Sono nuovo di Haskell e non sono realmente venduto al costruttore Nothing . Sembra solo un altro fallimento silenzioso che creerà mal di testa lungo la linea. Sembra molto più utile lanciare un errore quindi avrò la minima idea di cosa sta succedendo.

Perché mi sbaglio qui?

    
posta Hex Bob-omb 20.11.2012 - 20:11
fonte

2 risposte

13

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"!

    
risposta data 20.11.2012 - 21:20
fonte
11

Why am I wrong here?

Perché la mancanza di valore non è sempre indicativo di un errore.

    
risposta data 20.11.2012 - 20:31
fonte

Leggi altre domande sui tag