Mi sto allenando per un test domani per completare la mia introduzione alla programmazione funzionale, ma c'è una cosa che non capisco.Haskell: modelli non esaustivi
Ogni volta che ho un programma come:
test [] = []
test (x:xs) = test (xs)
Quello che fa è che si prende il primo elemento fuori dalla lista e continua con il resto. Ogni volta che ne rimane una sola, xs
dovrebbe essere []
che a sua volta dovrebbe attivare test [] = []
. Ma ogni volta che eseguo questo algoritmo ottengo un errore. Exception: <interactive>:20:5-16: Non-exhaustive patterns in function test.
Non sono riuscito a trovare una spiegazione chiara online. Qualcuno potrebbe mandarmi un link per spiegarlo chiaramente o spiegarmelo?
Strano. Lo snippet di codice che hai pubblicato non contiene pattern non esaustivi. – pyon
Solo riprese al buio: stai forse cercando di inserire questa definizione in ghci? Se è così, dovresti usare una sola istruzione let: 'let test [] = []; test (x: xs) = test xs'. – pyon
Sì, è quello che sto facendo. Grazie mille. Ho già iniziato a dare di matto perché ho passato tutta la settimana a programmare le ricorsioni e non sono riuscito a capire perché questo non avrebbe funzionato. –