请考虑以下示例代码:
-- 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 }
在这个例子中,一般应该如何阅读|
,在Elm中一般如何?
我在set-builder符号中熟悉它为“where”/“this that”,而在Haskell中的列表推导中它具有非常相似的目的,例如
[ x*2 | x <- [1..10] ]
在逻辑上等同于
(显然我也熟悉它在C语言中作为一元“或”运算符的使用)
像type Msg = Increment | Decrement
这样的东西呢?
或者,在此示例中讨论Union Types:
type Boolean
= T
| F
| Not Boolean
| And Boolean Boolean
| Or Boolean Boolean
答案 0 :(得分:9)
在类型中,我将其读作'或'。在反例中:
type Msg = Increment | Decrement
我会将其视为“Msg
为Increment
或 Decrement
”。在一个稍微复杂但仍然常见的Result
类型示例中:
type Result error value
= Ok value
| Err error
我会读到“Result
Ok
value
或 Err
error
”。< / p>
在您提供记录更新语法的示例中,我将其视为“ with ”而不是“ where ”。例如:
{ person | name = "George" }
是“person
值,其name
字段设置为"George"
”(而不是“其中名称= 'George'“这似乎意味着你根据person
中的值进行过滤。这个我认为比类型情况更模糊。