繁体   English   中英

定义列表在Haskell中的长度

[英]Defining how long a list can be in Haskell

因此,我是Haskell的新手,我试图定义一个最长为4个元素的列表。 到目前为止,我的type IntL = [Int,Int,Int,Int]但是我一直认为必须有一种更好/合适的方法来做到这一点。 在那儿?

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

话虽这么说, 图书馆的 存在 ,只是给你一个主意。

或者,只使用一个元组。

它可能看起来很愚蠢,并且肯定不会扩展,但那又如何呢?

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

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

基本的Haskell类型并不强大,无法对列表的最大长度进行编码。 为了做到这一点,您必须依赖于扩展名,例如GADT和Phantom Types,但这也不是那么简单。

如果您真的是新手,我建议您学习其他基本概念,例如Monads,IO和其他习语。

该网站是有关Haskell初始方法的很好阅读:

http://learnyouahaskell.com

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM