【发布时间】:2020-09-17 17:10:53
【问题描述】:
我目前正在学习 Haskell,我想为货币 Dollar(只是钞票,而不是硬币)定义我自己的递归数据类型。
我的尝试如下所示:
data Dollar = One Dollar
| Two Dollar
| Five Dollar
| Ten Dollar
| Twenty Dollar
| Fifty Dollar
| Hundred Dollar
我把这个给我的一个朋友看,他说看起来不错,但他还告诉我在定义的末尾加上一个| End。他试图解释为什么这是必要的,但我无法理解他的思路。也许这里有人有我可以遵循的解释。我真的很感激。
【问题讨论】:
-
这首先不需要递归;您所有的单参数数据构造函数都应该是空构造函数。
-
有趣且不同寻常的定义。可能符合 corecursive 数据类型...通常的定义是例如
data Dollar = One | Two | Twenty.
标签: haskell recursion types algebraic-data-types custom-data-type