Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何检查两个集合的显式并集是否为空?_Haskell_Functional Programming - Fatal编程技术网

Haskell 如何检查两个集合的显式并集是否为空?

Haskell 如何检查两个集合的显式并集是否为空?,haskell,functional-programming,Haskell,Functional Programming,下面是两个列表显式并集的代码。如何获得列表的长度而不是列表本身 explicit_union :: (Eq a) => [a] -> [a] -> [a] explicit_union as bs = foldl (\as b -> if elem b as then as else as ++ [b]) as bs 当且仅当两个集合都为空时,并集为空。因此,如果你只是为了这个目的而计算联合,你是在浪费计算时间 相反,如果你得到了工会,或者不得不使用工会,那么长度是最自

下面是两个列表显式并集的代码。如何获得列表的长度而不是列表本身

explicit_union :: (Eq a) => [a] -> [a] -> [a]
explicit_union as bs = foldl (\as b -> if elem b as then as else as ++ [b]) as bs

当且仅当两个集合都为空时,并集为空。因此,如果你只是为了这个目的而计算联合,你是在浪费计算时间

相反,如果你得到了工会,或者不得不使用工会,那么长度是最自然的方法

但是,由于您只想知道它是否为空,因此可以使用
take1ls==[]
而不是
length ls==0
。这样,Haskell——因为它是一种惰性语言——只需要计算第一个元素,而不是整个列表,因为
length
需要

编辑
正如@joseph所指出的,有一个Prelude函数来检查列表是否为空:
null::[a]>Bool

当且仅当两个集合都为空时,并集才为空。因此,如果你只是为了这个目的而计算联合,你是在浪费计算时间

相反,如果你得到了工会,或者不得不使用工会,那么长度是最自然的方法

但是,由于您只想知道它是否为空,因此可以使用
take1ls==[]
而不是
length ls==0
。这样,Haskell——因为它是一种惰性语言——只需要计算第一个元素,而不是整个列表,因为
length
需要

编辑
正如@joseph指出的,有一个Prelude函数来检查列表是否为空:
null::[a]>Bool

只需使用
length
函数。或者这是一个不允许你使用它的练习?当且仅当两者都为空时,联合不是空的吗?如果你计算它只是为了检查,那么就没有了point@ayrnee:请不要编辑问题以提出完全不同的问题,尤其是在已发布答案之后。如果您还想询问交叉口的情况,请使用
length
功能。或者这是一个不允许你使用它的练习?当且仅当两者都为空时,联合不是空的吗?如果你计算它只是为了检查,那么就没有了point@ayrnee:请不要编辑问题以提出完全不同的问题,尤其是在已发布答案之后。如果你还想问交叉口的问题,请或者干脆问一下。
null ls
。哈哈,我完全没有回答这个问题,你可以把它作为你的答案,或者如果你想问的话,我可以编辑我的答案。
null ls
。哈哈,我完全没有回答这个问题,你可以把它作为你的答案,如果你想的话,我可以编辑我的答案