繁体   English   中英

Haskell定义了一个非空列表数据类型

[英]Haskell define a non-empty list datatype

我已经定义了这样的数据类型来表示2D点:

data Point = Point (Double, Double) deriving (Show)

数据类型曲线(曲线是2D空间中创建曲线的点列表

data Curve  = Curve [Point] deriving (Show)

如何将Curve数据类型设置为非空? 所以它总是需要在列表中至少有1个点?

流行的semigroups库中的Data.List.NonEmpty模块实现了非空列表类型和实用程序功能。

解决方案实际上与Cactus的答案相同,一对包含必需的第一个元素,然后是其余的列表:

data NonEmpty a = a :| [a]

因此仙人掌的Curve类型将等同于NonEmpty Point

列表[Point]将始终包含0或更多Point s,因此如果存储额外的一个,则得到1 +(0或更多)= 1或更多 Point s:

data Curve = Curve Point [Point]

暂无
暂无

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

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