gpt4 book ai didi

module - 为什么 `type alias` 是在另一个模块中以相同方式定义的类型?

转载 作者:行者123 更新时间:2023-12-01 00:19:03 25 4
gpt4 key购买 nike

例如,来自 Task type in the Task module 的文档:

type alias Task err ok =
Task err ok

或从源头:
type alias Task x a =
Platform.Task x a

我认为答案是使它有可能从被定义为它自己的模块中公开。它是否正确?

更新:
Chad Gilbert 提出了一个很好的观点,提到 Platform primitives ,例如 TaskProcessId类型,其构造函数从未在此处使用,但为什么将它们分组在如此中心的位置是有道理的。尽管他的回答没有解释为什么它们在各自的模块中被别名(参见上面的 Process.Id 和 Task.Task)。

我猜如果没有别名,任何人都试图使用模块 Task Process 必须导入这些特定类型(即 Platform.TaskPlatform.ProcessId ),因为默认情况下不导入它们(参见 Elm's default imports )。

更新_2:
另一个例子是 Value 在模块 Json.Decode module :
-- From the docs:
type alias Value =
Value

-- From the source:
type alias Value = JsEncode.Value

我认为这证明了我上面的假设,但我不愿意回答我的问题,因为我是 Elm 的新手,很容易出错。

最佳答案

来自 Platform.Task 上的文档:

Head over to the documentation for the Task module for more information on this. It is only defined here because it is a platform primitive



在那里它被定义为:

type Task err ok = Task

...这并不能告诉我们太多。 Task是不透明类型,其内部 Task构造函数从不使用。它是 Elm 架构中的基本原语之一,根据上面的评论,似乎只在 Platform 中定义。因为它是以平台为中心的原语的方便分组。

关于module - 为什么 `type alias` 是在另一个模块中以相同方式定义的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50319088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com