首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么写‘`Html’而不是‘`Html’是惯用的?

问为什么写‘`Html’而不是‘`Html’是惯用的?
EN

Stack Overflow用户
提问于 2017-07-01 14:39:43
回答 1查看 135关注 0票数 1

我是埃尔姆的初学者。这是一个关于风格的问题,而不是什么东西是如何工作的。

例如,在http://elm-lang.org/examples/form中

viewValidation : Model -> Html msg

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

msg打算传达什么额外的信息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-01 15:10:53

Elm鼓励对Model和Msg这样的类型进行一致的命名,以表达它们的意义。小写msg的使用只会使它更加清楚其意图。

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

编辑

为了更详细地说明,请考虑elm-lang/html包的文档。

让我们看一下Html.program的定义

代码语言:javascript
复制
program :
    { init : (model, Cmd msg)
    , update : msg -> model -> (model, Cmd msg)
    , subscriptions : model -> Sub msg
    , view : model -> Html msg
    } -> Program Never model msg

榆树建筑概述了框架如何使用Model和Msg类型来携带状态的非常明确的意图,并指出了要执行的操作。通过在文档中始终如一地使用小写msg和model,可以更容易地理解哪里会发生什么。

考虑一种更类似Haskellesque的方法,在这种方法中,类型参数通常是从a开始缩略的。

代码语言:javascript
复制
program :
    { init : (a, Cmd b)
    , update : b -> a -> (a, Cmd b)
    , subscriptions : a -> Sub b
    , view : a -> Html b
    } -> Program Never a b

这个定义是完全正确的,但我认为它不像program的文档那样具有解释性,它提供了关于Msg和Model类型的方向的有力提示。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44862143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档