Month: November 2012
—————
-
Erlang. Операции if/then/else/case.
Операции if/then/else Напишем несложную функцию, находящую максимальный элемент массива: -module(test). -export([list_max/1]). list_max([]) -> []; list_max([Head | Rest]) -> list_max(Head, Rest). list_max(Head, []) -> Head; list_max(Head, [NewHead | List]) -> if Head > NewHead -> list_max(Head, List); true -> list_max(NewHead, List) end. 1> c(test.erl). {ok,test} 2> test:list_max([1,2,3,4,5]). 5 Первое, на что стоит обратить – аналог оператора […]
-
Erlang. Функции. Модули.
Функции Понятно что это такое, понятно для чего они используются. В erlang функции это все. Они вызываются, передаются в качестве аргументов, создаются другими функциями. Давайте определим, для примера, бесполезную функцию считающую произведение двух чисел: mul(A, B) -> A * B. В консоли такой синтаксис работать не будет, но можно изощрться создать через лямбда-функцию: 1> F = fun(A, B) […]
-
Сопоставление.
Сопоставление (pattern matching) Сопоставление или pattern matching, это еще один способ присвоения, извлечения значений из списков или кортежей. Работает это так – сравнивается две переменные, если они не эквивалентны по типу или по значению возникнет исключение (ошибка). Если они равны, но отличаются только в переменных, то переменным в левой части выражения будет присвоено соответстветствующие значения […]
-
Erlang. Строки. Работа со списками.
Strings (строки) Символы в erlang представляются целыми числами, а строки – списками числовых значений ASCII символов. Это связано с тем что erlang пришел из телекома, а там, работа со строками это почти экзотика. Поскольку символы это ASCII, то в 32х разрядной версии для сравнения символа в памяти используется два байта, а в x64 – четыре, […]