关于列表中的elem函数的一些信息

时间:2019-04-14 12:24:57

标签: haskell

我有一些关于elem函数的问题。 当列表包含特定值时,elem函数可以返回布尔值。例如。元素1 [1,2,3,5]返回true。

问题是列表是否由字符串组成。例如,列表为['A2','A1']。如何使用elem函数。我使用了elem'A2'['A1','A2'],但是它不起作用。

1 个答案:

答案 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

现在让我们检查一下FoldableEqEq a意味着a类型可以检查是否相等,并且,我们可以简单地将可折叠视为一个集合,或者现在可以逐个元素访问的数据结构。 因此,我们假设elem接受类型为a的项目,类型为a的“集合”并返回Bool,因此,如果我们有{ {1}}我们需要提供相同类型的元素。 现在,如前所述,如果我们使用字符串和字符串列表,则我们的“最终” [Char]类型将为elem。让我们尝试一下:

[Char] -> [[Char]] -> Bool