Как это | символ читается в вязе?
Рассмотрим следующий пример кода:
-- 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 }
Источник: выучить вяз за X минут
Как читать? |
в этом примере и вяза вообще?
Я знаком с ним в нотации конструктора множеств как "где" / "такой, что", а в списках в Haskell это имеет очень похожую цель, например
[ x*2 | x <- [1..10] ]
логически эквивалентно
Источник: Learn You A Haskell
(Очевидно, я также знаком с его использованием в качестве унарного оператора "или" в C-подобных языках)
Как насчет чего-то вроде type Msg = Increment | Decrement
?
Источник: https://guide.elm-lang.org/
Или, в этом примере при обсуждении Типов Союза:
type Boolean
= T
| F
| Not Boolean
| And Boolean Boolean
| Or Boolean Boolean
1 ответ
В типах я читаю это как "или". В встречном примере:
type Msg = Increment | Decrement
Я бы прочитал это как Msg
является Increment
или же Decrement
". В немного более сложном, но все еще распространенном примере Result
тип:
type Result error value
= Ok value
| Err error
Я бы прочитал Result
либо Ok
с value
или же Err
с error
".
В приведенном вами примере синтаксиса обновления записей я бы прочитал его как "с", а не "где". Например:
{ person | name = "George" }
это person
значение с его name
поле установлено в "George"
" (а не"где имя = 'Джордж' ", что подразумевает, что вы фильтруете на основе значений person
). Этот, я думаю, более двусмысленный, чем случай типа.