LINUX.ORG.RU

Новый номер журнала «Практика функционального программирования»

 , , , , ,


0

0

Вышел в свет четвертый выпуск журнала «Практика функционального программирования». В новом номере опубликованы следующие статьи:

  • Лисп — абстракции на стероидах. Виталий Маяцких.
  • Clojure, или «Вы все еще используете Java? тогда мы идем к вам». Алекс Отт.
  • Пределы выразительности свёрток. Виталий Брагилевский.
  • Сечения композиции как инструмент бесточечного стиля. Денис Москвин.
  • Мономорфизм, полиморфизм и экзистенциальные типы. Роман Душкин.

Обсуждение номера и отдельных статей

>>> Новый номер в разных форматах

Ответ на: комментарий от Sun-ch

Причем версия для спарков даже не отражена в прайсе, думаю, там раз в 5 дороже.

Sun-ch
()
Ответ на: комментарий от Sun-ch

> Отсюда - высокая стоимость профессиональных фреймворков для работы.

Что за фреймворки? LispWorks это отдельная реализация Common Lisp, которая в том числе включает в себя некоторый набор библиотек.

Нет денег? Используйте open-source: Clozure CL или SBCL. Мало того, я вообще не вижу особо смысла использовать коммерческие реализации, не зависимо от их стоимости.

И вообще, проблемы CL не имеют никакого отношения к практике функционального программирования ;)

archimag ★★★
()
Ответ на: комментарий от EvilBlueBeaver

> «Будьте добры помедленнее, я записываю». Абсолютно ничего не понял

В прошлой теме о выпуске фпрог был флейм про яичницу на тему состояний и вообще, что такое настоящее фп, где r отстаивал точку зрения, что у чисел есть состояния.

anonymous
()
Ответ на: комментарий от anonymous

> В прошлой теме о выпуске фпрог был флейм про яичницу на тему состояний и вообще, что такое настоящее фп, где r отстаивал точку зрения, что у чисел есть состояния.

А, помню такое было)

EvilBlueBeaver
()
Ответ на: комментарий от archimag

> В том то и дело, что тот же Common Lisp распрощался с функциональность лет этак 25 назад, но «народная молва» упорно ассоциирует его с функциональным программированием. В результате, когда хаскелисты пишут свои очередные «не понятно какие» (не могу подобрать подходящего слова) статьи, плохим снова оказывается лисп. Ну что за народ...

Я так понимаю, на больную мозоль наступили ;)

Кстати, я думаю, было бы неплохо написать статью на тему функциональности лиспа, а то все хаскель, да эм-эль...

dave ★★★★★
()

спасибо за журнал!

anonymous
()
Ответ на: комментарий от archimag

>Мало того, я вообще не вижу особо смысла использовать коммерческие реализации, не зависимо от их стоимости.

А я вижу. Потому что sbcl не имеет ничего похожего на CAPI http://www.lispworks.com/products/capi.html и на других платформах, кроме линакса выглядит более чем уныло.

Ну, издания на русском языке посвященного специально CL нет, за исключением вашего сайта, разумеется. Поэтому едим что дают.

Sun-ch
()
Ответ на: комментарий от Sun-ch

> Потому что sbcl не имеет ничего похожего на CAPI

http://www.lispworks.com/products/capi.html


И не будет этого иметь, нет никакого смысла включать инструмент для построения GUI в компилятор. Чем не устраивает cl-gtk2?

и на других платформах, кроме линакса выглядит более чем уныло.


Поэтому я и указал ещё и Clozure CL, который выглядит хорошо на всех платформах, но конкретно на Linux не так хорошо, как SBCL.

archimag ★★★
()
Ответ на: комментарий от dave

> Я так понимаю, на больную мозоль наступили ;)

Нет, просто хочу дистанцировать Common Lisp от хаскелистов...

Кстати, я думаю, было бы неплохо написать статью на тему

функциональности лиспа, а то все хаскель, да эм-эль...



Боюсь, что будут трудности с практическом материалом, ведь никто не пишет на CL в функциональном стиле ;)

archimag ★★★
()

Да, что вы спорите? Пусть функциональщики пишут на чем хотят, это их право, и оспаривать его мы с вами не будем. Таким образом пусть считают они свои факториалы, да числа Фибонначи, а мы, практики, руководствующиеся прежде всего здравым смыслом, будем писать программы на Java, C++ и python. Непопулярное решение никогда не может быть хорошим, а мейнстримовые языки используют массы, и будут использовать. Такова жизнь, привыкайте. Понятно, что лисп, а также прочая функциональщина, современному человеку нафиг не нужны и он не собирается гробить на это личное время.

anonymous
()
Ответ на: комментарий от archimag

> Боюсь, что будут трудности с практическом материалом, ведь никто не пишет на CL в функциональном стиле ;)

Я думаю, человек как раз хочет, чтобы была статья, разоблачающая миф, что CL - функциональный :)

anonymous
()
Ответ на: комментарий от anonymous

> Непопулярное решение никогда не может быть хорошим, а мейнстримовые языки используют массы, и будут использовать.

Так и тянет сказать «Мухи любят говно. Миллионы мух не могут ошибаться» :) А по делу: непопулярное решение еще не значит плохое, оно может быть не так хорошо разрекламировано например. Или на такое решение не найдется вагон индусов, способных работать за еду, а нужны спецы, которым нужно платить дофейхоа денег.

EvilBlueBeaver
()
Ответ на: комментарий от anonymous

> Пусть функциональщики пишут на чем хотят, это их право, и оспаривать его мы с вами не будем.

Пусть только делают это молча и не корчат из себя илиту.

Непопулярное решение никогда не может быть хорошим

Кстати да, линух отстой.

anonymous
()
Ответ на: комментарий от anonymous

Вы же утверждаете что лисп всемогущий...

Я требую пруф! :)

о, нет, утверждать что лисп всемогуч - да без системы типов Х-М и иже,
у меня язык не поворачивается. :)

Касательно асма под лиспом есть несколько путей - сваять свой асм, как правило будет выходить без блекджека, типа (asm opts ((mrs %0, cpsr)(orr %1, %0, #0xc0))). Или, как и у большинства - через какой-нить nasm/fasm. Хотя для подобных низкоуровней использовать лисп глупо - ведь есть Си/паскаль, как глупо на Си делать (явно сложные в рамках структурного подхода) весчи типа GTK :)

impfp
()
Ответ на: комментарий от EvilBlueBeaver

Спасибо, интересные статьи, особенно о экзистенциальных типах. А долбодятлы типа лестера и куки точно не нужны.

anonymous
()
Ответ на: комментарий от anonymous

> Спасибо, интересные статьи, особенно о экзистенциальных типах. А долбодятлы типа лестера и куки точно не нужны.

Мне спасибо говорить не за что, я статьи эти не писал. Но со второй частью высказывания согласен.

EvilBlueBeaver
()
Ответ на: комментарий от lester

Для u(x) выводит композицию (u * x).

(set 'notf (increase-order 'not))
(set 'noteven? (notf even?))

impfp
()
Ответ на: комментарий от EvilBlueBeaver

> А по делу: непопулярное решение еще не значит плохое, оно может быть не так хорошо разрекламировано например.

Или порог вхождения высок. Я уже не удивляюсь, когда вижу, что кто-то из программеров не знает математику. Что тут говорить о функционалке, которая вся построена на математике. Многие просто ленивы в изучении чего-то, многие не осиливают, хоть бенефиты очевидны и невооруженному глазу.

anonymous
()
Ответ на: комментарий от anonymous

Сделать иммутабельные коллекции/объекты/литералы - это действительно легко

Сделать так, чтобы с ними можно было удобно жить - вот что не легко. Увидьте лес за деревьями.

anonymous
()
Ответ на: комментарий от lester

то что ведь плюсы есть - я не спорю, но ведь кроме плюсов есть еще и минусы

lester ★★★★
()
Ответ на: комментарий от anonymous

Кстати, возник вопрос - если допущена синтаксическая ошибка в приведенной тобой вставке - компилятор ее выведет?

impfp
()
Ответ на: комментарий от archimag

> Нет, просто хочу дистанцировать Common Lisp от хаскелистов...

Ты относишься к функциональщине как к некой проказе, которой надо сторониться, а то еще заразишься чем-нибудь нехорошим? Верно? ;)

dave ★★★★★
()
Ответ на: комментарий от lester

> лисперы всегда отличались сплоченностью - больше их никто и не похвалит и не поддержит :)

Угу. Особенно если учесть, что лисп я знаю на уровне институтской программы и нигде не говорил о том. что я гуру лиспа :)

EvilBlueBeaver
()
Ответ на: комментарий от lester

> а кто тут гуру? :) разве что анонимус

Анонимус личность разносторонняя ...

EvilBlueBeaver
()
Ответ на: комментарий от dave

> Ты относишься к функциональщине как к некой проказе, которой надо

сторониться, а то еще заразишься чем-нибудь нехорошим? Верно? ;)


Не к функциональщине, а к весьма конкретным хаскелистам, который пишут много букв, отчаянно снобствуют (тот же adept), но он них не дождёшься какого-либо полезного практически значимого куска кода. Естественно, это вызывает у народ резко негативную реакцию. И я не хочу, что бы эта реакция распространялась и на Common Lisp, который приплетают к этому по не совсем ясным мне причинам.

archimag ★★★
()
Ответ на: комментарий от anonymous

> Или порог вхождения высок. Я уже не удивляюсь, когда вижу, что кто-то из программеров не знает математику. Что тут говорить о функционалке, которая вся построена на математике. Многие просто ленивы в изучении чего-то, многие не осиливают, хоть бенефиты очевидны и невооруженному глазу.

Очень четко видны люди с завышенным ЧСВ в таких ситуациях. Одни, когда чего-то не осиливают, понимают, что они до этого еще не доросли. Другие не осиливают и кричат, что «оно не нужно». Такие «крики» если и можно принять от кого-то, то только от людей, которые осилили инструмент и «кричат» осознанно.

EvilBlueBeaver
()
Ответ на: комментарий от archimag

> Не к функциональщине, а к весьма конкретным хаскелистам, который пишут много букв, отчаянно снобствуют (тот же adept), но он них не дождёшься какого-либо полезного практически значимого куска кода.

А на Hackage зайти не судьба? Все же опенсорсное. Понятно, что куда-то там ходить и что-то смотреть это не для труЪ.

anonymous
()
Ответ на: комментарий от EvilBlueBeaver

> Такие «крики» если и можно принять от кого-то, то только от людей, которые осилили инструмент и «кричат» осознанно.

а ты осилил delphi, visual basic, С# и т.д.?

lester ★★★★
()
Ответ на: комментарий от lester

> а ты осилил delphi, visual basic, С# и т.д.?

Ну во-первых, я и не кричал что они не нужны. Во-вторых, в свое время осиливал и дельфы и басик. Сейчас «осиливаю» C#. Последний нравится многим, но у него есть и куча недостатков, которые мешают лично мне.

EvilBlueBeaver
()
Ответ на: комментарий от archimag

> Не к функциональщине, а к весьма конкретным хаскелистам, который пишут много букв, отчаянно снобствуют (тот же adept), но он них не дождёшься какого-либо полезного практически значимого куска кода. Естественно, это вызывает у народ резко негативную реакцию. И я не хочу, что бы эта реакция распространялась и на Common Lisp, который приплетают к этому по не совсем ясным мне причинам.

И поэтому ты не хочешь, что бы Common Lisp связывали с функциональщиной, адепты которой тебе не нравятся, хотя подсознательно считаешь, что такая связь все-таки возможна?

dave ★★★★★
()
Ответ на: комментарий от EvilBlueBeaver

> Ну во-первых, я и не кричал что они не нужны.

тут никто не кричит - все мы культурные люди и разговариваем спокойно ;)

Во-вторых, в свое время осиливал и дельфы и басик. Сейчас «осиливаю» C#


а - ну тогда извини, ты вправе защищать лисп

lester ★★★★
()
Ответ на: комментарий от anonymous

> А на Hackage зайти не судьба? Все же опенсорсное.

Понятно, что куда-то там ходить и что-то смотреть это не для труЪ.


А зачем мне туда ходить? Я смотрел на haskell немного в своё время, понял что мне это не интересно и не подходит.

Меня беспокоит другое. Группа хаскелистов-теоретиков своим поведением совершенно дискредитирует Haskell, функциональное программирование как таковое, а заодно с ними цепляют и Common Lisp. Репутация haskell и ФП меня мало интересует, а всего лишь хочу, что бы при этом не страдал Common Lisp.

archimag ★★★
()
Ответ на: комментарий от impfp

Конечно выведет. Это вообще выдрано из контекста так что простой копипастой ты тут не отделаешься :) По большей части такие вещи вообще на асме пишут, потом линкуют с сишным кодом, просто когда нужно дернуть пару битов в специфичных регистрах как тут, делают инлайны.

anonymous
()
Ответ на: комментарий от dave

> хотя подсознательно считаешь, что такая связь все-таки возможна?

Не я, но большая часть программистов уверены (уж не знаю с чем это связано), что Common Lisp это ФП, что видно хотя бы по этому обсуждению.

archimag ★★★
()
Ответ на: комментарий от archimag

> Группа хаскелистов-теоретиков своим поведением совершенно дискредитирует Haskell

Имена и фамилии в студию. Мне почему-то казалось, что комьюнити у Хаскеля небольшое, тихое и умное. Может я что пропустил?

anonymous
()
Ответ на: комментарий от lester

> тут никто не кричит - все мы культурные люди и разговариваем спокойно ;)

Ну возможно погорячился , не признал.

а - ну тогда извини, ты вправе защищать лисп

Осиливаю уже на протяжении 4-х лет (в рамках работы) и это не единственное, что я осиливаю. Лисп даже не пытаюсь защищать ( да и непонятно от чего защищать его).

И к чему такая ирония, о Великий Гуру?

EvilBlueBeaver
()
Ответ на: комментарий от archimag

> Не я, но большая часть программистов уверены (уж не знаю с чем это связано), что Common Lisp это ФП, что видно хотя бы по этому обсуждению.

Тогда у меня вопросов больше нет.

dave ★★★★★
()
Ответ на: комментарий от archimag

> Не к функциональщине, а к весьма конкретным хаскелистам, который п ишут много букв, отчаянно снобствуют (тот же adept), но он них не дождёшься какого-либо полезного практически значимого куска кода.

http://www.google.com/search?as_sitesearch=hackage.haskell.org%2Fpackage&as_q...

PROOF OR GTFO? :)

anonymous
()
Ответ на: комментарий от EvilBlueBeaver

> о Великий Гуру?

ну не стоит так - типичный С/С++-быдлокодер я, который хорошо знает только три языка, хоть и пишет достаточно серьезные вещи, а VB, C#, Clojure, Delphi, Haskell и т.п. я наверное так и не осилю - порог вхождения высоковат :(

П.С. а то что я захожу в темы лисперов потроллить - так это не со зла, тут такая традиция - mv и прочие изначально ходили в темы С/С++, а я решил поддержать с другой стороны

lester ★★★★
()
Ответ на: комментарий от anonymous

Ну и что это? Есть http://fprog.ru/planet/, где собираются в том числе блоги авторов журнала. За всё время её существования я помню всего один пост, где хоть как-то затрагивалась тема реального практического использования haskell. Под этим я понимаю рассказ о том, что вот конкретный автор (а не кто-то там) написал/пишет вот такую полезную всем нужную программу/библиотеку, или вот его код на haskell является часть реальной действующей системы.

archimag ★★★
()
Ответ на: комментарий от lester

> типичный С/С++-быдлокодер

хорошо знает только три языка

Либо не дописал, либо с математикой туго :)

а VB, C#, Clojure, Delphi, Haskell и т.п. я наверное так и не осилю - порог вхождения высоковат :(

Ну для Haskell и Closure я соглашусь, высоковат в том числе и у меня. Но вот каким боком здесь VB, C#, Delphi, которые являются «флагманами быдлокодерских языков» ?

EvilBlueBeaver
()
Ответ на: комментарий от EvilBlueBeaver

> Либо не дописал, либо с математикой туго :)

у тебя определенно есть склонности к аналитике, но только зачаточные - иначе ты бы понял, что под «С/С++-быдлокодер» я имел ввиду профессию, а не весь набор языков ( кстати asm, basic, pascal и т.п. я ес-но тоже знаю - но т.к. писал на них давно, то не буду ничего утверждать насчет них )

Но вот каким боком здесь VB, C#, Delphi, которые являются «флагманами быдлокодерских языков» ?


ну я ж их не осилил по твоей логике

lester ★★★★
()
Ответ на: комментарий от anonymous

> Сделать так, чтобы с ними можно было удобно жить - вот что не легко. Увидьте лес за деревьями.

О чем ты?

anonymous
()
Ответ на: комментарий от EvilBlueBeaver

> Ну для Haskell и Closure я соглашусь, высоковат в том числе и у меня. Но вот каким боком здесь VB, C#, Delphi, которые являются «флагманами быдлокодерских языков» ?

closure

closure

closure

Начни с осиливания навания.

anonymous
()
Ответ на: комментарий от archimag

> Что еще за «экзистенциально-эфемерные» функции?

Это - ирония и эвфемизация. Жаль, что они вам недоступны; впредь буду иметь это в виду. Впрочем, это можно было сразу понять по вашей сурьезно-сосредоточенной физиогномии на аватарке.

> Потому что программы на CL почти никогда этим не занимаются, их используют по другому.

Отличная отговорка на все случаи жизни!

Q: Почему на лиспе нельзя портабельно разбирать argv / канпелировать в ELF / юзать треды / юзать ассемблерные вставки / эффективно работать с памятью / whatever?
A: Потому что программы на лиспе почти никогда этим не занимаются, их используют по-другому.

> А зря, можете разовьёте мысль?

Охотно.

Давайте сходим по вышеприведенной ссылке, и заглянем в unix-options.lisp:

(defun cli-options ()
  "list of tokens passed in at the cli"
  #+:sbcl (rest sb-ext:*posix-argv*)
  #+:ccl (rest ccl:*command-line-argument-list*)
  #+:clisp (rest ext:*args*)
  #+:lispworks (rest system:*line-arguments-list*)
  #+:cmu (rest extensions:*command-line-words*)
 )

Что же мы видим? Набор костылей - воркараундов вокруг несовместимости имплементаций. И это только для пяти имплементаций, и только для UNIX!

По мере вырастания задачи из детсадовских штанишек хелловорлда, подобные ситуации (и, как следствие, костыли для их обхода) будут лишь множиться.

Kuka ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.