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 - Fatal编程技术网

在Haskell中创建不同类型对象的列表?

在Haskell中创建不同类型对象的列表?,haskell,Haskell,我必须创建一个函数来接收这个 使用列表参数的步骤 检查[c,(x,y,z),c,(x,y,z),…,c,(x,y,z)] 其中c是一个整数,(x,y,z)是一个元组 但是我不知道如何实现这个功能,这是不可能的。列表只能包含单一类型的值。您可以创建一个[任意一个整数(整数,整数,整数)],在这种情况下,您的列表看起来像[左c1,右(x1,y1,z1),左c2,右(x2,y2,z2)],但这不是很令人满意,可能很难使用,并且无法由类型系统强制执行。请记住,我们越是允许类型检查器强制执行,就越不可能遇

我必须创建一个函数来接收这个 使用列表参数的步骤

检查[c,(x,y,z),c,(x,y,z),…,c,(x,y,z)]

其中c是一个整数,(x,y,z)是一个元组


但是我不知道如何实现这个功能,这是不可能的。列表只能包含单一类型的值。您可以创建一个
[任意一个整数(整数,整数,整数)]
,在这种情况下,您的列表看起来像
[左c1,右(x1,y1,z1),左c2,右(x2,y2,z2)]
,但这不是很令人满意,可能很难使用,并且无法由类型系统强制执行。请记住,我们越是允许类型检查器强制执行,就越不可能遇到意外值


相反,您应该考虑将不匹配类型括成一对列表:<代码> [(整数,整数,整数)] /代码>,这会使列表看起来像<代码> [(c1,(x1,y1,Z1)],(c2,(x2,y2,z 2)] < /p> < /p>如果每个<代码> c>代码>后面是一个三元组,为什么不<代码> [(c,(x,y,z)),(c,(x,y,z)),…]?你不可能真的有这样的异构列表。如果它们成对出现,则使用嵌套元组,或者使用有区别的并集类型,如

other Integer YourTuple
,鉴于您无法创建这样的列表,您似乎不太可能必须创建接收它们的函数。(这看起来像是一张照片。)