Soy totalmente nuevo en Haskell y al escribir pequeños programas normalmente termino con demasiadas cláusulas where para verificar muchas cosas en la función, por lo que es una buena práctica escribir donde cláusulas o ¿hay alguna otra buena alternativa para esto?Haskell demasiadas cláusulas where, cualquier sugerencia alternativa
por ejemplo en el siguiente código intenté encontrar si hay elementos duplicados de hormiga en cada fila de la lista de dos dimensiones, funciona y todo es contenido en la misma función pero no estoy satisfecho con cómo se ve el código yi encontrar un estilo más imperativo de abordar el problema, así que estoy buscando sugerencias o pensamientos sobre esto de parte de la gente con experiencia que existe.
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
una vez más este código es para ilustrar un problema, estoy buscando un enfoque para formular un problema en el estilo funcional. sus sugerencias o artículos, enlaces serían de mucha ayuda.
Gracias
+1 por sugerir dividir en funciones más pequeñas en lugar de tratar de hacer malabares con toda la complejidad a la vez. – Joren