Elm 为什么写“HTMLMSG”而不是“HTMLA”是习惯用法?

Elm 为什么写“HTMLMSG”而不是“HTMLA”是习惯用法?,elm,Elm,我是榆树的初学者。这是一个关于风格的问题,而不是某样东西是如何运作的 例如,我们有 viewValidation:Model->Html msg 我知道这样做是为了viewValidation model可以与Html Msg类型的值共存于同一列表中。但是,既然msg这里只是一个类型变量,为什么不使用更传统的a msg打算传达哪些额外信息?Elm体系结构鼓励一致地命名类型,如Model和msg,以传达其含义。使用小写字母msg只会让我们更清楚地了解其意图 它很可能被命名为a,但可以说它并没有传达

我是榆树的初学者。这是一个关于风格的问题,而不是某样东西是如何运作的

例如,我们有

viewValidation:Model->Html msg

我知道这样做是为了
viewValidation model
可以与
Html Msg
类型的值共存于同一列表中。但是,既然
msg
这里只是一个类型变量,为什么不使用更传统的
a


msg
打算传达哪些额外信息?

Elm体系结构鼓励一致地命名类型,如
Model
msg
,以传达其含义。使用小写字母
msg
只会让我们更清楚地了解其意图

它很可能被命名为
a
,但可以说它并没有传达那么多信息

编辑

详细说明,考虑包的文档。 让我们看一下以下各项的定义:

程序:
{init:(模型,Cmd msg)
,更新:msg->model->(model,Cmd-msg)
,订阅:模型->子消息
,视图:模型->Html消息
}->程序从不建模
概述了框架如何使用您的
模型
Msg
类型来承载状态和指示要执行的操作的非常明确的意图。通过在文档中始终使用小写的
msg
model
,可以更容易地理解内容

考虑另一种更为Haskell式的方法,其中类型参数通常从
a
开始缩写:

程序:
{init:(a,Cmd b)
,更新:b->a->(a,Cmd b)
,订阅:a->Sub b
,视图:a->HTMLB
}->程序从来都不是b

该定义完全正确,但我认为它远不如
程序
的文档解释,该文档提供了有关您的
Msg
模型
类型的强大提示。

感谢您的回复!你能更明确地说明额外传达的信息是什么吗?我已经用文档中的例子更新了上面的答案。啊,我明白了。因此
msg
意味着“这可能是
msg
类型的值,但是它在您的程序中定义了”。如果用户未定义
Msg
,而是从该库导入,则类型将为
Html Msg
,而不是
Html Msg
。你认为这是一个公平的总结吗?听起来是一个充分的总结