Как это | символ читается в вязе?

Рассмотрим следующий пример кода:

-- 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). Этот, я думаю, более двусмысленный, чем случай типа.

Другие вопросы по тегам