Erlang. Операторы. Atoms, Integers, Booleans.

Математические операторы

Тип Описание Тип данных
+ Сложение (addition) Integer | Float
Вычитание (substraction) Integer | Float
* Умножение (multiplication) Integer | Float
/ Деление с плавающей запятой (floating point division) Integer | Float
div Деление нацело (integer division) Integer
rem Остаток от деления (integer remainder) Integer

Примеры использования математических операторов в консоли erlang:

1> 1 + -1.
0
2> 2/3.
0.6666666666666666
3> 3 div 2.
1
4> 3 rem 2.
1

Атомы (константы)

Атомы это строковые константы типа: red, green, blue или enabled, disabled. Всегда должны начинатся с нижнего регистра (маленькой буквы) и могут включать в себя буквы, цифры, символы “@”, “_”, “.”. Например: testUser, test_user, test.user. В принципе для атомов можно использоват любые символы, если заключать их в одинарные кавычки: ‘Monday’, ‘not ready’, ‘node#1\nnode#2’

Integers (целые)

Определение целых работа с ними классическая:

1> 1.
1
2> 2+3.
5
3> 4-7.
-3

Booleans

Здесь тоже все более-менее привычно за исключением того что это не отдельный тип а просто обычный атом-константа. Вот несколько примеров, которые иллюстрируют особенности erlang:

1> 1==1.
true
2> 1>2.
false
3> a is_boolean(true).
true
5> is_boolean(2+3).
false
Оператор Описание
and Возвращает true если оба аргумента по отдельности вернут true
andalso Возвращает false если первый аргумент был false и не проверяет второй аргумент
or Возвращает true если любой аргумент был true
orelse Возвращает true если первый аргумент был true, без проверки второго элемента
xor Возвращает true если один из аргументов true, а другой false
not Возвращает true если аргумент был false, и наоборот

Comments

comments

6 thoughts on “Erlang. Операторы. Atoms, Integers, Booleans.”

  1. Привет, ты уже решал какие-то реальные задачи на Erlang?
    Давно смотрел в его сторону, почитываю то тут то там, и вот решился покодить и интересно было бы взяться за реальную задачу, может не совсем реальную, но приблеженную к реальности.

  2. Привет. До реальных задач дело еще не дошло. Кривая вхождения уж очень крутая. Эта часть про операторы самая простая, все что пойдет дальше, будет выпадать из привычных рамок императивных языков. Ну к слову, такая мелочь – переменных в языке нет совсем. Только константы.

  3. Атомы это не константы. Это почти тоже самое что symbols в ruby.

  4. Мне показалось что это что-то похожее на константы в php или define в C. Я с руби не так чтобы очень знаком, как впрочем и с эрлангом, но в чем разница между атомами и константами?

  5. В общем случае, это неизменяемые строки. Атомы используются вместо чисел для обозначений, для повышения ясности кода. Единственная операция на атомах (она и самая эффективная) это сравнение. Атомы хранятся как ссылки в несколько байт в независимости от написанной длины атома. В отличие от строк (где сравнение происходит символ за символом), атомы сравниваются за один шаг. И константа в php хранит значение в памяти, атом же не имеет значения, он сам по себе обозначение.

  6. Спасибо за разъяснение. Да, я так себе это и представлял, но с точки зрения языка это всеже константы (хотя и устроены они как цепочка байтов, что конечно быстрее в обработке чем посимвольное стравнение строк).

Leave a Reply