Я совершенно новый в Haskell и при написании небольших программ, у меня обычно заканчивается слишком много предложений о том, чтобы проверить многие вещи в функции, так что хорошая практика - писать где предложения или есть ли другие хорошие альтернативы для этого?
например, в приведенном ниже коде, я попытался найти, есть ли ant повторяющиеся элементы в каждой строке двумерного списка, он работает, и каждая вещь является содержимым одной и той же функции, но я не удовлетворен тем, как выглядит код и я считаю, что это более императивный стиль подхода к проблеме, поэтому я ищу любое предложение или мысль об этом от опытных людей там.
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
еще раз этот код просто для иллюстрации одной проблемы, я ищу подход для формулирования проблемы в функциональном стиле. ваши предложения или статьи, ссылки были бы очень полезными.
Спасибо