module - 为什么`type alias`是在另一个模块中以相同方式定义的类型?
问题描述
例如,从模块中Task
类型Task
的文档中:
type alias Task err ok =
Task err ok
或从源头:
type alias Task x a =
Platform.Task x a
我认为答案是使它有可能从被定义为它自己的模块中公开。这个对吗?
更新:
Chad Gilbert 提出了一个很好的观点,提到了Platform
原语,例如Task
andProcessId
类型,它们的构造函数从未在那里使用过,但为什么这些会被分组在这样一个中心位置是有道理的。尽管他的回答没有解释为什么它们在各自的模块中被别名(参见上面的Process.Id和 Task.Task)。
我猜如果没有别名,任何尝试使用模块的Task
人Process
都必须导入这些特定类型(即 , Platform.Task
),Platform.ProcessId
因为默认情况下不导入它们(请参阅Elm 的默认导入)。
UPDATE_2:
另一个例子是Value
在模块Json.Decode
模块中:
-- From the docs:
type alias Value =
Value
-- From the source:
type alias Value = JsEncode.Value
我认为这证明了我上面的假设,但我不愿意回答我的问题,因为我是 Elm 的新手,很容易出错。
解决方案
从文档中Platform.Task
:
前往该
Task
模块的文档以获取更多信息。因为是平台原语所以才在这里定义
在那里它被定义为:
type Task err ok = Task
...这并不能告诉我们太多。Task
是一个不透明的类型,它的内部Task
构造函数从不使用。它是 Elm 架构中的基本原语之一,基于上面的评论,似乎只是在其中定义,Platform
因为它是一个以平台为中心的原语的方便分组。
推荐阅读
- r - R - 根据匹配的字符创建数据框并以不同的方式标记它们
- fusionauth - 使用加盐哈希密码迁移用户?
- react-router - 如何使用多个可选参数和路径占位符渲染嵌套路由?
- wordpress - WP 从 apache 迁移到 nginx 结果 -- 404 -- on https
- json - 将本机图像上传为表单数据
- javascript - 为什么我的时钟代码会减慢我的网站速度
- python - 合并数据框会产生 NaN 值
- javascript - 如何使用 JavaScript 获取 AJAX 的选择值
- facebook - Facebook 消息 Webhook 事件:如何识别消息是页面故事的回复/评论?
- java - 如何在jsonobject中存储图像