我有一些关于elem函数的问题。 当列表包含特定值时,elem函数可以返回布尔值。例如。元素1 [1,2,3,5]返回true。
问题是列表是否由字符串组成。例如,列表为['A2','A1']。如何使用elem函数。我使用了elem'A2'['A1','A2'],但是它不起作用。
答案 0 :(得分:5)
问题是您打算使用Strings
(在haskell中也称为[Char]
),但是您使用的不是正确的sintax,请在此处检查区别:
Prelude Data.List> :t 'A'
'A' :: Char
Prelude Data.List> :t "A"
"A" :: [Char]
现在让我们接受elem
的类型签名:
Prelude Data.List> :t elem
elem :: (Foldable t, Eq a) => a -> t a -> Bool
现在让我们检查一下Foldable
和Eq
,Eq a
意味着a
类型可以检查是否相等,并且,我们可以简单地将可折叠视为一个集合,或者现在可以逐个元素访问的数据结构。
因此,我们假设elem
接受类型为a
的项目,类型为a
的“集合”并返回Bool
,因此,如果我们有{ {1}}我们需要提供相同类型的元素。
现在,如前所述,如果我们使用字符串和字符串列表,则我们的“最终” [Char]
类型将为elem
。让我们尝试一下:
[Char] -> [[Char]] -> Bool