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