gpt4 book ai didi

Haskell 太多 where 子句,任何替代建议

转载 作者:行者123 更新时间:2023-12-03 15:23:03 31 4
gpt4 key购买 nike

我是 Haskell 的新手,在编写小程序时,我通常会使用太多的 where 子句来检查函数中的许多内容,因此编写 where 子句是一种很好的做法,或者还有其他好的替代方法吗?

例如,在下面的代码中,我试图查找二维列表的每一行中是否有 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

再一次,这段代码只是为了说明一个问题,我正在寻找以函数式风格表达问题的方法。您的建议或文章,链接会很有帮助。

谢谢

最佳答案

尝试编写抽象的、可重用的函数
您将能够更轻松地编写它们

isUnique :: Eq a => [a] -> Bool
isUnique [] = True
isUnique (x:xs) = all (/= x) xs && isUnique xs

noDups :: Eq a => [[a]] -> Bool
noDups = all isUnique

关于Haskell 太多 where 子句,任何替代建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1779551/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com