Elm 递归类型定义

Elm recursive type definition

只是看了一下 elm 代码,发现了以下类型定义:

type Cmd msg = Cmd

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

这不是递归类型定义,它是将类型 Cmd 定义为具有一个标签 Cmd 的联合类型,其中不包含任何额外信息。通常像这样的定义是为了表示该类型表示的值在 elm 中没有单独的含义。

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