我一直在試圖定義一個函數,給定一個整數和一個整數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
感謝您的任何想法如何處理無限的列表? – John 2011-04-08 23:16:00
約翰,你需要在列表中匹配它的長度,而不是像下面的答案那樣取長度。 – 2011-04-09 02:23:17
我不認爲在一般情況下可以處理無限列表。如何知道確定性程序停止在'repeat 2'中尋找'1'? – acfoltzer 2011-04-09 02:34:06