Sono totalmente nuovo in Haskell e quando si scrivono piccoli programmi di solito finiscono con troppe clausole dove controllare molte cose nella funzione, quindi è buona pratica scrivere dove clausole o ci sono altre buone alternative per questo?Haskell troppe clausole where, eventuali suggerimenti alternativi
per esempio nel codice seguente ho provato a trovare se ci sono elementi di formica in ogni riga della lista bidimensionale, funziona e ogni cosa è contenta nella stessa funzione ma non sono soddisfatto di come il codice appaia e io trovare lo stile più imperativo di approccio al problema, quindi sto cercando qualsiasi suggerimento o pensiero su questo da persone con esperienza là fuori.
noDups :: [[a]] -> Bool
noDups du = and (checkSu du)
where
checkDup [] = []
checkDup (x:xs) = checkRow x ++ checkDup xs
where
checkRow [] = []
checkRow (x:xs) = [x /= y | y <- xs] ++ checkRow xs
ancora una volta questo codice è solo per illustrare un problema, sto cercando un approccio per formulare un problema in stile funzionale. i tuoi suggerimenti o articoli, i collegamenti sarebbero molto utili.
Grazie
+1 per suggerire di dividere in funzioni più piccole invece di provare a destreggiarsi tra la complessità in una volta. – Joren