我一直在尝试定义一个函数,给定一个整数列表和一个整数 n,返回一个布尔值,指示 n 是否在列表中恰好出现一次。
我有这个,但它不起作用,我无法弄清楚
once :: [a] -> (a -> Bool) -> Bool
filter _ [] = []
filter p (x:xs)
| p x = x : filter p xs
| otherwise = filter p xs
An example of what I want would be:
Main> once [2,3,2,4] 2
False
Main> once [1..100] 2
True
因为我认为我以前的解决方案很丑陋,所以我问并得到这个答案:
once :: Eq a => a -> [a] -> Bool
once x = (== [x]) . filter (== x)
我认为你不能把这个函数写得更好,而且与接受的答案相比,它很懒。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)