Ich bin völlig neu in Haskell und wenn ich kleine Programme schreibe, endet ich normalerweise mit zu vielen where-Klauseln, um viele Dinge in der Funktion zu überprüfen, also ist es gut, where-Klauseln zu schreiben Gibt es noch andere gute Alternativen dafür?Haskell zu viele where-Klauseln, irgendwelche alternativen Vorschläge
zum beispiel in dem code unten habe ich versucht zu finden, wenn es ameise doppelte elemente in jeder zeile der zweidimensionalen liste gibt, es funktioniert und jede sache ist zufrieden in der gleichen funktion aber ich bin nicht zufrieden mit wie code aussieht und ich finden Sie es mehr imperative Stil der Annäherung an das Problem, so dass ich für jeden Vorschlag oder Gedanken dazu von den erfahrenen Menschen da draußen suchen.
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
erneut dieser Code ist nur ein Problem zu veranschaulichen, ich suche nach Ansatz Problem in funktionalem Stil zu formulieren. Ihre Vorschläge oder Artikel, Links wären sehr hilfreich.
Dank
+1 für den Vorschlag, in kleinere Funktionen zu teilen, anstatt zu versuchen, die ganze Komplexität auf einmal zu jonglieren. – Joren