Elm 递归类型定义

标签 elm

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

type Cmd msg = Cmd

我似乎无法理解这是如何工作的。谁能解释一下?

最佳答案

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

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

关于Elm 递归类型定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39500105/

相关文章:

json - 如何解码榆树中的空对象{}?

Elm:以初始状态渲染

elm - ELM 0.18 中的图形包发生了什么?

typeerror - elm-lang 错误 `(==) is expecting the right side to be a:`

Elm:获取图像的大小

Elm 表单 - 仅在离开字段且未输入任何输入后显示验证错误 - 脏/已访问

http - 如何在 elm 中使用 "form"配置 http 请求

jquery - 有没有等同于 jQuery.offset 的 Elm?

elm - 无法读取未定义的属性 'kids' - 或者如何打破 Elm 中信号的循环依赖关系?

functional-programming - 通过点函数更新 Elm-lang 记录中的字段?