怎么样的符号在榆树中读取?

时间:2017-02-28 23:19:23

标签: syntax elm

请考虑以下示例代码:

-- Update the fields of a record. (It must have the fields already.)
{ person |
  name = "George" }

-- Update multiple fields at once, using the current values.
{ particle |
  position = particle.position + particle.velocity,
  velocity = particle.velocity + particle.acceleration }

来源:Learn Elm in X Minutes

在这个例子中,一般应该如何阅读|,在Elm中一般如何?

我在set-builder符号中熟悉它为“where”/“this that”,而在Haskell中的列表推导中它具有非常相似的目的,例如

[ x*2 | x <- [1..10] ]

在逻辑上等同于

enter image description here

来源:Learn You A Haskell

(显然我也熟悉它在C语言中作为一元“或”运算符的使用)

type Msg = Increment | Decrement这样的东西呢?

来源:https://guide.elm-lang.org

或者,在此示例中讨论Union Types

type Boolean
    = T
    | F
    | Not Boolean
    | And Boolean Boolean
    | Or Boolean Boolean

1 个答案:

答案 0 :(得分:9)

在类型中,我将其读作''。在反例中:

type Msg = Increment | Decrement

我会将其视为“MsgIncrement Decrement”。在一个稍微复杂但仍然常见的Result类型示例中:

type Result error value
    = Ok value
    | Err error

我会读到“Result Ok value Err error”。< / p>

在您提供记录更新语法的示例中,我将其视为“ with ”而不是“ where ”。例如:

{ person | name = "George" }

是“personname字段设置为"George"”(而不是“其中名称= 'George'“这似乎意味着你根据person中的值进行过滤。这个我认为比类型情况更模糊。