-
Карты памяти как рабочий инструмент
Часто ли вы сталкиваетесь с тем что приходится работать с большим объемом данных, разрозненной информации, непривычной для вас сфере деятельности и предметной области? Если так, то сейчас я расскажу об инструменте который помогает мне справятся с такого рода сложностями. Это mind maps, или «ментальные карты» или «карты памяти», как будет угодно. Получили широкое распространение благодаря […]
-
Erlang. Упражнения (продолжение). Сортировка.
Sorting Lists. Quicksort.
-
Erlang. Упражнения (продолжение). Манипулирование списками.
Manipulating Lists
-
Erlang. Упражнения (продолжение).
Database Handling Using Lists
-
Erlang. Упражнения.
В рамках программы изучения Erlang я делаю упражнения из книги «Erlang programming» Франческо Чезарини и Саймона Томпсона. Оказалось что это на редкость полезное занятие, – теперь синтаксис не кажется таким уж страшным, и решение хоть и простых, но практических задач, придает уверенности в себе. Ниже я приведу условия задачи (уж простите, без перевода) и свой […]
-
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 – четыре, […]
-
Erlang. Tuples, Lists.
Tuples (кортежи) Кортежи встречаются не во многих языках. Это своего рода контейнеры, которые могут содержать другие типы. Их часто сравнивают со структурами в C, только поля кортежа не имею имени. Несколько примеров: {1,2,3}. {a, b,c}. {}. {true, false}. {{1, 2, 3}, {one, two, three}, {“One”, “Two”, “Three”}}}. И несколько функций, для работы с кортежами: 1> […]