为什么单位类型是Enum类型类的成员?

时间:2017-03-23 23:12:40

标签: haskell

LYAH说:

  

<head> <base href="https://polygit.org/polymer+1.8.1/components/"> <script src="webcomponentsjs/webcomponents-lite.js"></script> <link rel="import" href="polymer/polymer.html"> </head> <body> <my-app></my-app> <dom-module id="my-app"> <template> <ul> <template is="dom-repeat" items="[[devices]]" as="device"> <li>[[device.name]] <ul> <template is="dom-repeat" items="[[device.components]]" as="component"> <li>[[component.name]] <ul> <my-distinct inputs="[[component.processors]]" path="type"> </my-distinct> </ul> </li> </template> </ul> </li> </template> </ul> </template> </dom-module> <dom-module id="my-distinct"> <template> <template is="dom-repeat" items="[[outputs]]" as="processorName"> <li>[[processorName]] </template> </template> </dom-module> </body>成员是按顺序排序的类型 - 可以枚举它们。 Enum类型类的主要优点是我们可以在列表范围中使用它的类型。他们还定义了后继者和前辈,您可以使用Enumsucc函数获得这些后继者。此课程中的类型:pred()BoolCharOrderingIntInteger和{{1 }}

为什么Float是这个类型类的成员?虽然它支持所有必需的功能,但在Double()始终失败的意义上它看起来并不有用,并且在列表范围内使用它只会产生{{1}本身。

1 个答案:

答案 0 :(得分:4)

针对这些事情的非正式政策是将其作为一个实例,除非它不能(以一种守法的方式)&#34;。这个政策在过去引起了一些惊喜(Foldable / Traversable个元组出现在脑海中,但是大多数情况下都是积极的。通常会遇到一些函数,您希望在各种类中使用该多态函数,并且很高兴发现它适用于您当前代码中恰好需要的具体类型,因为你的具体类型有适当的实例。