Ho una domanda molto semplice. Mi piacerebbe usare una clausola where dopo un blocco di codice che utilizza gli operatori di bind ma ottengo un errore di compilazione.Haskell: Posso usare una clausola where dopo un blocco con operatori di binding (>> =)?
Ecco un semplice esempio:
main =
putStrLn "where clause test:" >>
return [1..10] >>= \list ->
print list'
where list' = reverse list -- test1.hs:5:28: Not in scope: `list'
posso usare una clausola let per la lista' come in
main =
putStrLn "where clause test:" >>
return [1..10] >>= \list ->
let list' = reverse list -- works of course
in print list'
ma mi piacerebbe molto se ho potuto utilizzare una clausola dove. ..
ho provato anche con la notazione fare
main = do
putStrLn "where clause test:"
list <- return [1..10]
print list'
where list' = reverse list --test3.hs:5:30: Not in scope: `list'
Stesso problema. Posso usare una clausola where in queste circostanze?
Grazie, il tuo esempio con più parentesi lo cancella per me. –