榆树递归类型定义

时间:2016-09-14 21:44:57

标签: elm

只是看看榆树代码并遇到以下类型定义:

type Cmd msg = Cmd

我似乎无法理解这是如何工作的。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:10)

这不是递归类型定义,它将类型Cmd定义为具有一个标签Cmd的联合类型,该标签不包含额外信息。通常这样的定义用于表示该类型表示在榆树中没有个别含义的值。

在这种情况下,类型的定义是因为Cmd上的所有操作都隐藏在平台代码中,因此用户无需检查或解构Cmd值。 Cmd需要公开一个类型变量以保持Cmd值的类型安全性,因为它们封装了一个promise以产生给定类型的消息,并且该类型可以通过Cmd.map进行更改。