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
List 定义列表在Haskell中的长度_List_Haskell - Fatal编程技术网

List 定义列表在Haskell中的长度

List 定义列表在Haskell中的长度,list,haskell,List,Haskell,所以我是Haskell的新手,我试图定义一个最多4个元素的列表。 到目前为止,我有类型IntL=[Int,Int,Int,Int] 但我在想,一定有更好/合适的方法来做这件事。 有吗?这在Haskell中是有问题的,因为幻像类型编码大小需要适当的编译器支持(否则使用起来很烦人),而GHC中的NAT类型最近才出现 话虽如此,只是想给你一个想法 或者,只需使用一个元组。这在Haskell中是有问题的,因为幻影类型编码大小需要适当的编译器支持(否则使用起来很烦人),而GHC中的NAT类型最近才出现 话

所以我是Haskell的新手,我试图定义一个最多4个元素的列表。
到目前为止,我有
类型IntL=[Int,Int,Int,Int]
但我在想,一定有更好/合适的方法来做这件事。
有吗?

这在Haskell中是有问题的,因为幻像类型编码大小需要适当的编译器支持(否则使用起来很烦人),而GHC中的NAT类型最近才出现

话虽如此,只是想给你一个想法


或者,只需使用一个元组。

这在Haskell中是有问题的,因为幻影类型编码大小需要适当的编译器支持(否则使用起来很烦人),而GHC中的NAT类型最近才出现

话虽如此,只是想给你一个想法


或者,只需使用元组。

基本Haskell类型的功能不足以编码列表的最大长度。为了做到这一点,您必须依赖于诸如GADT和Phantom类型之类的扩展,但这并不简单

如果你真的是个新手,我建议你学习其他的基本概念,比如Monads、IO和其他习惯用法

本网站是Haskell的入门读物:


基本Haskell类型的功能不足以编码列表的最大长度。为了做到这一点,您必须依赖于诸如GADT和Phantom类型之类的扩展,但这并不简单

如果你真的是个新手,我建议你学习其他的基本概念,比如Monads、IO和其他习惯用法

本网站是Haskell的入门读物:


它可能看起来很愚蠢,而且肯定不能缩放,但它的大小呢

data Max4 a
   = Empty
   | One a
   | Two a a
   | Three a a a
   | Four a a a a

使用
类型IntL=Max4 Int
?它是基本的,您应该能够理解它,并且通过在它上实现操作,您可以学到很多东西。

它可能看起来很愚蠢,而且肯定不能扩展,但是呢

data Max4 a
   = Empty
   | One a
   | Two a a
   | Three a a a
   | Four a a a a

使用
类型IntL=Max4 Int
?它是基本的,您应该能够理解它,并且通过对它执行操作可以学到很多东西。

类型IntL=[Int,Int,Int,Int,Int]
应该根本不起作用。@GHC 7.10中的BartekBanachewicz建议启用
数据种类
,以便利用该类型进行分类。如果这样做,则会得到
IntL::[*]
,即
IntL
是一个类型列表。不幸的是,这不是OP所要求的。
类型IntL=[Int,Int,Int,Int]
根本不应该起作用。@BartekBanachewicz在GHC 7.10中建议启用
数据种类
,以便利用该类型进行分类。如果这样做,则会得到
IntL::[*]
,即
IntL
是一个类型列表。不幸的是,这不是OP所要求的,这要看情况而定。由4个元素组成的列表和最多由4个元素组成的列表之间有很大的区别。这取决于。4个元素的列表和最多4个元素的列表有很大区别。我投了反对票。答案似乎不正确(例如,
Maybe(a,Maybe(a,Maybe(a,Maybe a)))
是一种非常基本的Haskell类型,看起来非常像一个具有最大长度的列表),并且将用户重定向到monad和
IO
的注释对我来说看起来偏离了目标。我的答案实际上是一个非答案,可能不太适合Stackoverflow,但我发现它更适合新手。我投了反对票。答案似乎不正确(例如,
Maybe(a,Maybe(a,Maybe(a,Maybe a)))
是一种非常基本的Haskell类型,看起来非常像一个具有最大长度的列表),并且将用户重定向到monad和
IO
的注释对我来说看起来偏离了目标。我的答案实际上是一个非答案,可能不太适合Stackoverflow,但我发现它更适合新手。