【发布时间】:2023-03-31 12:39:01
【问题描述】:
好的,这可能会在前奏中出现,但是:是否有标准库函数用于查找列表中的唯一元素?为了澄清,我的(重新)实现是:
has :: (Eq a) => [a] -> a -> Bool
has [] _ = False
has (x:xs) a
| x == a = True
| otherwise = has xs a
unique :: (Eq a) => [a] -> [a]
unique [] = []
unique (x:xs)
| has xs x = unique xs
| otherwise = x : unique xs
【问题讨论】:
-
你的
has也是标准的;只是flip elem。 -
甚至
has xs = (`elem` xs)。 -
@yatima2975 你为什么使用
elem作为中缀? -
@dopatraman 因为
elem的类型为Eq a => a -> [a] -> Bool,所以将其用作中缀操作部分会使xs成为第二个参数。(`elem` xs)被取消为(\x -> elem x xs)这就是我们想要的!