我知道这
[]是带有类型的空列表[a]
是的,但是了解“类型[a]”的实际含义很重要。实际上,它的意思是type forall a . [a],即,这不是某个特定类型“ a”的元素的列表,而是给定类型的任何选择a,而是该类型的列表。特别地,它也可以是元组类型的列表。因此,null对元组列表和任何其他类型的列表一样有效。
要实际查看null此类元组列表的实际操作,您只需提供一个即可。例如,null [(1,2)]将其用于元组列表。但是,如果列表为空,则列表中没有内容会限制类型。从上下文中可能很清楚,例如
Prelude> [null l | l <- [ [], [(1,2)], [(1,3)] ]]
[True,False,False]
Run Code Online (Sandbox Code Playgroud)
或者您可以使用签名明确指定
Prelude> null ([] :: [(String, Double)])
True
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以定义类型为空的列表
[(a,b)]?
简单地说[]。确实[]是一个空列表,但是元素的类型是自由的。它具有type [a],但a可以(b, c)与具有两个不同类型的2元组相同。
例如,我知道这
null [1] == []会给我们True
null :: Foldable f => f a -> Bool是一个函数,该函数采用f a(在这种情况下为[a])并返回Bool。它检查列表是否为空。它并没有产生一个列表。
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |