tag:blogger.com,1999:blog-32757902.post8060589108544068420..comments2023-08-04T06:48:25.106+03:00Comments on Как сломать мозг за 21 день.: Синтаксис Erlang в двух словах.lrrrhttp://www.blogger.com/profile/12742106367384624657noreply@blogger.comBlogger25125tag:blogger.com,1999:blog-32757902.post-40664792762521693252010-04-02T11:22:11.268+04:002010-04-02T11:22:11.268+04:00Крайне интересный видеокурс по созданию динамическ...Крайне интересный видеокурс по созданию динамических оперденей на базе eralng и mnesia:<br /><a rel="nofollow"> http://www.erlang-mnesia-video.ru/</a>Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-32757902.post-32319413993434651652008-03-24T17:53:00.000+03:002008-03-24T17:53:00.000+03:00Гм на самом деле точно не знаю, знаю только что та...Гм на самом деле точно не знаю, знаю только что такая проблема есть. Для работы с юникодными строками вообще библиотеки, конечно, существуют, но вот чтоб именно в консоль их красиво выводить -- не видел пока.lrrrhttps://www.blogger.com/profile/12742106367384624657noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-39846722402606148102008-03-23T19:27:00.000+03:002008-03-23T19:27:00.000+03:00не могли бы подсказать как erlang и русский подруж...не могли бы подсказать как erlang и русский подружить, а то "Привет мир"<BR/>2> tut:helloword(1).<BR/>\320\237\321\200\320\270\320\262\320\265\321\202 \320\274\320\270\321\200!ok<BR/>(erland R12 + fedora)gringohttps://www.blogger.com/profile/11264352344048033550noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-41548550907694509522008-03-04T10:46:00.000+03:002008-03-04T10:46:00.000+03:00hex(V) when V $0 + V; hex(V) -> $a + (V - 10).hex(V) when V < 10 -><BR/> $0 + V;<BR/> hex(V) -><BR/> $a + (V - 10).Mamuthttps://www.blogger.com/profile/07281374154710811867noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-59171091176798325742008-02-11T00:28:00.000+03:002008-02-11T00:28:00.000+03:00А есть язык типа эрланг, но заточенный для создани...А есть язык типа эрланг, но заточенный для создания десктоп приложений?Юрийhttps://www.blogger.com/profile/11639972813297407852noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-34278162471201761452008-02-06T12:06:00.000+03:002008-02-06T12:06:00.000+03:00edain> Я не то что бы большой борец за авторские п...edain> Я не то что бы большой борец за авторские права, но тыреные ебуки по теме интересующиеся и сами смогут легко найти на варезных порталах. Здесь им не место.lrrrhttps://www.blogger.com/profile/12742106367384624657noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-47528671998366866042008-02-06T11:34:00.000+03:002008-02-06T11:34:00.000+03:00This comment has been removed by a blog administrator.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-32757902.post-53561124013114551242008-02-05T17:45:00.000+03:002008-02-05T17:45:00.000+03:00Гм, у меня escript под виндой без проблем запустил...Гм, у меня escript под виндой без проблем запустилсяlrrrhttps://www.blogger.com/profile/12742106367384624657noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-58781780837413764132008-02-05T12:53:00.000+03:002008-02-05T12:53:00.000+03:00забыл.. escript под win так и не получилось запуст...забыл.. <BR/>escript под win так и не получилось запустить, если ко-то осилит, поделитесь, пожалуйста, рецептом.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-32757902.post-14949116069688398882008-02-05T12:50:00.000+03:002008-02-05T12:50:00.000+03:00-1) А как запустить erl-файл?сначала скомпилироват...-1) А как запустить erl-файл?<BR/><BR/>сначала скомпилировать<BR/>1 в шеле c(module). и запустить module:fun().<BR/>2 в командной строке:<BR/>erlc fac1.erl компилируем, запускаем <BR/>erl -noshell -s module fun param<BR/>тк интерпритатор сам не завершается - можно добавить -s init stop<BR/>или прописать init:stop(). в конце программы в erl файле.<BR/><BR/>-Когда я нажимаю на Ctrl+C он -почему-то падает.<BR/><BR/>ctrl+break под win<BR/><BR/>под win, кста, удобно использовать файлик .erlang положив его в папку, куда поставлен ерланг. а в нём прописать примерно так:<BR/>c:cd("C:/progect/erlang/code" ).<BR/>io:format("Now in:~p~n" , [element(2,file:get_cwd())]).Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-32757902.post-31173645361804255132008-02-04T14:21:00.000+03:002008-02-04T14:21:00.000+03:00Кста про матчинг. Там when есть.% поиск в списке m...Кста про матчинг. Там when есть.<BR/><BR/><BR/>% поиск в списке max значения<BR/>-module(tut6).<BR/>-export([list_max/1]).<BR/><BR/>list_max([Head | Rest]) -><BR/> list_max(Rest, Head).<BR/><BR/>list_max([], Res) -><BR/> Res;<BR/>list_max([Head | Rest], Result_so_far) when Head > Result_so_far -><BR/> list_max(Rest, Head);<BR/>list_max([Head | Rest], Result_so_far) -><BR/> list_max(Rest, Result_so_far).<BR/> <BR/>39> c(tut6).<BR/>{ok, tut6}<BR/>40> tut6:list_max([1, 2, 3, 4, 5, 7, 4, 3, 2, 1]).<BR/>7<BR/><BR/><BR/>взято там-же http://gzip.rsdn.ru/article/erlang/GettingStartedWithErlang.xmlAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-32757902.post-6138751312041869872008-02-03T19:14:00.000+03:002008-02-03T19:14:00.000+03:00_winnie> На самом деле эрланг это такая хрень кото..._winnie> <BR/>На самом деле эрланг это такая хрень которая изначально предназначена для написания серверов. Поэтому из командной строчки запускать не очень удобно.<BR/><BR/>Я обычно делаю так:<BR/><BR/>Сначала компилируем в beam<BR/> erlc -W module<BR/>Потом запускаем <BR/> erl -run Module Function [Args..]<BR/><BR/>Правда после того как функция отработает, интерпретатор останется висеть. Более правильный вариант -- сделать приложение (Application), но это надо маны почитать.<BR/><BR/>И ближе к тому что надо -- интерфейс для скриптинга через escript, у модуля должна быть функция main/1, запускать соотв-но как escript myapp.erl<BR/><BR/>Насчет Ctrl+C не могу ничего сказать сейчас, винды под рукой нету :)lrrrhttps://www.blogger.com/profile/12742106367384624657noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-44705417196755291322008-02-03T18:50:00.000+03:002008-02-03T18:50:00.000+03:001) А как запустить erl-файл?2) Как ввести с клавиа...1) А как запустить erl-файл?<BR/>2) Как ввести с клавиатуры два числа, и вывести их сумму?<BR/><BR/>Там на RSDN рассказывается как запустить из интерпретатора <BR/>c(модуль) <BR/>модуль:функция<BR/>, как это сделать из обычной командной строки?<BR/><BR/>C:\test\erl>dir /b c:\soft\dev\erl5.6\bin<BR/>dialyzer.exe<BR/>erl.exe<BR/>erl.ini<BR/>erlc.exe<BR/>escript.exe<BR/>start.boot<BR/>start_clean.boot<BR/>start_sasl.boot<BR/>typer.exe<BR/>werl.exe<BR/><BR/>И ещё такой вопрос, как выйти из интерпретатора? Когда я нажимаю на Ctrl+C он почему-то падает.<BR/><BR/>erl.exe - Ошибка приложения<BR/>Инструкция по адресу "0x00922f91" обратилась к памяти по адресу "0x00000114". Память не может быть "read".<BR/><BR/>Что бы люди загорелись, надо рассказать как правильно запустить %)_winniehttps://www.blogger.com/profile/04382725998308329157noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-10806409304189475532008-02-01T14:17:00.000+03:002008-02-01T14:17:00.000+03:00Большой> Это у вас просто с непривычки. Эрланг дей...Большой> Это у вас просто с непривычки. Эрланг действительно очень прост, конструкций и ключевых слов можно по пальцам пересчитать, никакого груза "обратной совместимости". Он в общем-то и создавался с прицелом на то чтобы среднего инженера ему можно было научить за пару недель.<BR/><BR/>Кстати синтаксис там во многом от Пролога, и первая версия Erlang на Прологе была написана.lrrrhttps://www.blogger.com/profile/12742106367384624657noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-42490805380993690202008-02-01T14:07:00.000+03:002008-02-01T14:07:00.000+03:00А-а-а-а-аааааааааа!!!!! Я сошел с ума. Большое спа...А-а-а-а-аааааааааа!!!!! Я сошел с ума. Большое спасибо. Моск взорвался :) Теперь понимаю, что есть языки, которые фортрану77 никогда не догнать по сложности прочтения кода. Хотя он наверно проектировался не для читателей, а для писателей.Anonymoushttps://www.blogger.com/profile/10153997747825142135noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-31681158592941018322008-02-01T13:23:00.000+03:002008-02-01T13:23:00.000+03:00edoc_modnar> Но там это только для строк работает,...edoc_modnar> Но там это только для строк работает, насколько я понимаю?<BR/><BR/>Сергей Кищенко> Да, спасибо -- про _A я не знал :) <BR/><BR/>kaa.python> Спасибо, добавил ссылкуlrrrhttps://www.blogger.com/profile/12742106367384624657noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-74160372590954152682008-02-01T10:00:00.000+03:002008-02-01T10:00:00.000+03:00На мой взгляд, еще вот сюда стоит заглянуть, очень...На мой взгляд, еще вот сюда стоит заглянуть, очень так же крайне полезно.<BR/>http://gzip.rsdn.ru/article/erlang/GettingStartedWithErlang.xmlAlexander Stavoninhttps://www.blogger.com/profile/01870264285593019213noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-82401509561199141052008-01-31T20:55:00.000+03:002008-01-31T20:55:00.000+03:00>>Да, foo({_, B}) будет иметь тот же эффект что и ...>>Да, foo({_, B}) будет иметь тот же эффект что и foo({A, B}), но если A нас не интересует, лучше вместо него подставить "_". Особенно это удобно в случаях типа foo({_, _, _, _, B, _, _})<BR/><BR/>Скорее, лучше сказать, что в случае с foo({A, B}) и неиспользованием A будет ворнинг, а мы ведь ворнинги не любим :) На самом деле, _ - просто анонимная переменная. Дабы подавить сообщение о ворнинге можно также использовать имена переменных, начинающихся с _, например foo({_Name, _Message, Login, Password, _, _, _}). Это удобней - видно, что предполагается передавать, хотя различия есть: {_,_}={20,30} прокатит, а {_A,_A}={20,30} - нет.<BR/><BR/>P.S. С интересом буду следить. Пока изучу джангу, хотя может потом вернусь к Эрлангу - уж очень он приятен :)Sergey Kishchenkohttps://www.blogger.com/profile/13451038740185023562noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-60097715642952320382008-01-31T18:03:00.000+03:002008-01-31T18:03:00.000+03:00выглядит как на скорую руку написанный для игрушки...выглядит как на скорую руку написанный для игрушки скриптовый языкAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-32757902.post-35491451193736098342008-01-31T17:39:00.000+03:002008-01-31T17:39:00.000+03:00На самом деле в Ruby тогда тоже не обычный switch/...На самом деле в Ruby тогда тоже не обычный switch/case, а такой вот "паттерн-матчинг", ведь можно использовать регекспы:<BR/><BR/>case (x)<BR/>when /^x.*/ ...<BR/>when /^a.b$/ ...<BR/>...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-32757902.post-56150170362845319312008-01-31T13:09:00.000+03:002008-01-31T13:09:00.000+03:00Wunar>Сложно все впихнуть в один пост %) В принцип...Wunar><BR/>Сложно все впихнуть в один пост %) В принципе это все можно и прямо в интерпретаторе набирать.<BR/><BR/>Но я на всякий случай еще приаттачил сейчас исходник модуля (см. в конце), и там кое-какие пояснения есть по этому поводу.lrrrhttps://www.blogger.com/profile/12742106367384624657noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-80024437536835946432008-01-31T12:26:00.000+03:002008-01-31T12:26:00.000+03:00fxposter>Да, кстати -- для питоновода тут особенны...fxposter><BR/>Да, кстати -- для питоновода тут особенных проблем быть не должно, а атомы это действительно то же самое что ruby symbols.<BR/><BR/>switch это не совсем то, switch это ведь то же самое что<BR/><BR/>if (X == A) then ..<BR/>elseif (X == B) then ...<BR/>elseif (X == C) then ...<BR/><BR/>А паттерн матчинг более мощная вещь:<BR/><BR/>if (match(X, A)) then ..<BR/>elseif (match(X, B)) then ...<BR/>elseif (match(X, C)) then ...<BR/><BR/>Да, foo({_, B}) будет иметь тот же эффект что и foo({A, B}), но если A нас не интересует, лучше вместо него подставить "_". Особенно это удобно в случаях типа foo({_, _, _, _, B, _, _}) <BR/><BR/>P.S. Насчет C++ все просто: все-таки тяга к функциональщине -- <I>сама по себе</I> недостаточно мощная причина, чтобы менять работу, есть еще много других факторов :)lrrrhttps://www.blogger.com/profile/12742106367384624657noreply@blogger.comtag:blogger.com,1999:blog-32757902.post-48614044816597330202008-01-31T10:10:00.000+03:002008-01-31T10:10:00.000+03:00о. люблю такие посты.будем ждать про написание рас...о. люблю такие посты.<BR/><BR/>будем ждать про написание распределёнщины.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-32757902.post-27017445409545242382008-01-31T02:27:00.000+03:002008-01-31T02:27:00.000+03:00Честно сказать, выглядит ужасающе. :) Синтаксис, к...Честно сказать, выглядит ужасающе. :) Синтаксис, конечно, ОЧЕНЬ непривычный.<BR/><BR/>Хотя некоторые элементы знакомы:<BR/>списки - из питона<BR/>{} - это тоже из питона (только там круглые скобки "()"), кортежами называется<BR/>атомы - очень напоминают :string из ruby<BR/><BR/>"Паттерн матчинг" - выражения, конечно, заумные. :) Всегда switch был.<BR/><BR/>Ну это я так...<BR/><BR/>> foo({_, B}) -><BR/>Поясни "_". В функцию мы передаем кортеж (один аргумент) из двух элементов. Мы на тип первого аргумента никаких ограничений не накладываем. Зачем тогда wildcard? Ведь оно по сути аналогично foo({A, B}). Или я где-то недопонял?<BR/><BR/>PS. Сорри, читать маны как-то неохота. :)<BR/>PPS. Кажись, ты на работе на C++ пишешь. Откуда такая тяга к функциональщине? Или почему ты всё-же работаешь C++-программистом?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-32757902.post-50112327632670964662008-01-31T00:35:00.000+03:002008-01-31T00:35:00.000+03:00Отлично! Наверное было бы неплохо сразу рассказать...Отлично! Наверное было бы неплохо сразу рассказать и о том, как написаное сохранить в файл/вызвать оттуда, чтобы экспериментировать было попроще (-module(md5hex). -export(md5_hex/1) или чего-нибудь подобное).Anonymousnoreply@blogger.com