Что значит | и || значит в Эрланге?

Я проверил операторов веб-сайтов erlang и т. д., но не могу найти, что || и | Означает.

Я где-то читал, что || означает «такой, что», но что означает всего один «|»?


person slahslah90    schedule 08.06.2020    source источник


Ответы (1)


| — оператор «против»: он помещает элемент перед списком:

1> [1 | [2,3]].
[1,2,3]
2> [[1, 2] | [3,4,5]].
[[1,2],3,4,5]

|| используется в списках. В простейшей форме его можно использовать как сокращение для map:

3> [2 * X || X <- [1,2,3]].
[2,4,6]

Но это становится намного удобнее, когда вы хотите написать несколько генераторов, создающих декартово произведение:

4> [{X, Y} || X <- [1,2,3], Y <- [4, 5, 6]].
[{1,4},{1,5},{1,6},{2,4},{2,5},{2,6},{3,4},{3,5},{3,6}]

Вы также можете сделать filter по пути. Сравнивать:

5> [X+Y || X <- [1,2,3], Y <- [4,5,6]].
[5,6,7,6,7,8,7,8,9]

to:

6> [X+Y || X <- [1,2,3], Y <- [4,5,6], X+Y > 6].
[7,7,8,7,8,9]

Оператор | необходим в том смысле, что это канонический способ создания нового списка из существующего головного элемента и хвоста списка. Та же нотация работает и при сопоставлении с образцом, т. е. таким же образом вы деконструируете список.

С другой стороны, списковые включения — это в основном синтаксический сахар: они могут быть написаны с использованием обычных приложений-функций и, следовательно, не являются фундаментальными для языка. Но они могут значительно улучшить читаемость, избавившись от синтаксического шума, имитируя понимание множества, например математическую нотацию, непосредственно в языке.

person alias    schedule 08.06.2020