LINUX.ORG.RU — Русская информация об ОС Linux

[#]  
ott

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

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

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

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

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

Метки: clojure, lisp, журнал, программирование, пфп, фп

ott ***** (25.02.2010 19:30:40)
Проверено: anonymous_incognito (25.02.2010 21:41:44)
Juick

[#] Ответ на: комментарий от Sun-ch 26.02.2010 13:56:30  
Sun-ch

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

Sun-ch # (26.02.2010 13:59:51)
[#] Ответ на: комментарий от Sun-ch 26.02.2010 13:56:30  

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

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

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

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

archimag ** (26.02.2010 14:00:30)
[#] Ответ на: комментарий от EvilBlueBeaver 26.02.2010 13:59:50  

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

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

anonymous (26.02.2010 14:02:10)
[#] Ответ на: комментарий от anonymous 26.02.2010 14:02:10  
EvilBlueBeaver

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

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

EvilBlueBeaver * (26.02.2010 14:03:35)
[#] Ответ на: комментарий от archimag 26.02.2010 13:39:21  
dave

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

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

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

dave ***** (26.02.2010 14:03:59)
[#] Ответ на: комментарий от dave 26.02.2010 14:03:59  
dave

в дополнение к кложер

dave ***** (26.02.2010 14:06:27)
[#]  

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

anonymous (26.02.2010 14:11:46)
[#] Ответ на: комментарий от archimag 26.02.2010 14:00:30  
Sun-ch

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

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

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

Sun-ch # (26.02.2010 14:13:36)
[#] Ответ на: комментарий от Sun-ch 26.02.2010 14:13:36  

> Потому что sbcl не имеет ничего похожего на CAPI
> http://www.lispworks.com/products/capi.html


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

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


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

archimag ** (26.02.2010 14:21:09)
[#] Ответ на: комментарий от dave 26.02.2010 14:03:59  

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

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

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

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


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

archimag ** (26.02.2010 14:23:33)
[#]  

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

anonymous (26.02.2010 14:25:50)
[#] Ответ на: комментарий от archimag 26.02.2010 14:23:33  

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

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

anonymous (26.02.2010 14:27:42)
[#] Ответ на: комментарий от anonymous 26.02.2010 14:25:50  
EvilBlueBeaver

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

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

EvilBlueBeaver * (26.02.2010 14:29:24)
[#] Ответ на: комментарий от anonymous 26.02.2010 14:25:50  

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

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

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

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

anonymous (26.02.2010 14:32:36)
[#]  

Спасибо.

RUSDACent * (26.02.2010 14:33:42)
[#] Ответ на: комментарий от anonymous 26.02.2010 13:45:54  
impfp

>Вы же утверждаете что лисп всемогущий...
Я требую пруф! :)

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

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

impfp * (26.02.2010 15:03:29)
[#] Ответ на: комментарий от EvilBlueBeaver 26.02.2010 13:59:50  

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

anonymous (26.02.2010 15:09:05)
[#] Ответ на: комментарий от anonymous 26.02.2010 15:09:05  
EvilBlueBeaver

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

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

EvilBlueBeaver * (26.02.2010 15:10:30)
[#] Ответ на: комментарий от lester 26.02.2010 12:46:02  
impfp

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

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

impfp * (26.02.2010 15:12:31)
[#] Ответ на: комментарий от EvilBlueBeaver 26.02.2010 15:10:30  

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

lester **** (26.02.2010 15:12:42)
[#] Ответ на: комментарий от EvilBlueBeaver 26.02.2010 14:29:24  

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

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

anonymous (26.02.2010 15:13:24)
[#] Ответ на: комментарий от anonymous 26.02.2010 13:56:19  

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

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

anonymous (26.02.2010 15:14:28)
[#] Ответ на: комментарий от anonymous 26.02.2010 15:13:24  

> хоть бенефиты очевидны и невооруженному глазу

в виде практических результатов или на бумаге?

lester **** (26.02.2010 15:16:21)
[#] Ответ на: комментарий от lester 26.02.2010 15:16:21  

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

lester **** (26.02.2010 15:17:42)
[#] Ответ на: комментарий от anonymous 26.02.2010 13:53:59  
impfp

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

impfp * (26.02.2010 15:25:33)
[#] Ответ на: комментарий от archimag 26.02.2010 14:23:33  
dave

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

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

dave ***** (26.02.2010 15:27:43)
[#] Ответ на: комментарий от lester 26.02.2010 15:12:42  
EvilBlueBeaver

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

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

EvilBlueBeaver * (26.02.2010 15:29:49)
[#] Ответ на: комментарий от EvilBlueBeaver 26.02.2010 15:29:49  

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

lester **** (26.02.2010 15:30:33)
[#] Ответ на: комментарий от lester 26.02.2010 15:30:33  
EvilBlueBeaver

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

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

EvilBlueBeaver * (26.02.2010 15:31:51)
[#] Ответ на: комментарий от dave 26.02.2010 15:27:43  

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


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

archimag ** (26.02.2010 15:34:07)
[#] Ответ на: комментарий от anonymous 26.02.2010 15:13:24  
EvilBlueBeaver

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

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

EvilBlueBeaver * (26.02.2010 15:35:36)
[#] Ответ на: комментарий от archimag 26.02.2010 15:34:07  

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

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

anonymous (26.02.2010 15:37:17)
[#] Ответ на: комментарий от EvilBlueBeaver 26.02.2010 15:35:36  

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

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

lester **** (26.02.2010 15:37:47)
[#] Ответ на: комментарий от lester 26.02.2010 15:37:47  
EvilBlueBeaver

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

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

EvilBlueBeaver * (26.02.2010 15:42:19)
[#] Ответ на: комментарий от archimag 26.02.2010 15:34:07  
dave

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

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

dave ***** (26.02.2010 15:43:51)
[#] Ответ на: комментарий от EvilBlueBeaver 26.02.2010 15:42:19  

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

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

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


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

lester **** (26.02.2010 15:46:47)
[#] Ответ на: комментарий от anonymous 26.02.2010 15:37:17  

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


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

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

archimag ** (26.02.2010 15:47:26)
[#] Ответ на: комментарий от impfp 26.02.2010 15:25:33  

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

anonymous (26.02.2010 15:50:03)
[#] Ответ на: комментарий от dave 26.02.2010 15:43:51  

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

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

archimag ** (26.02.2010 15:50:17)
[#] Ответ на: комментарий от archimag 26.02.2010 15:47:26  

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

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

anonymous (26.02.2010 15:52:08)
[#] Ответ на: комментарий от lester 26.02.2010 15:46:47  
EvilBlueBeaver

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

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

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

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

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

EvilBlueBeaver * (26.02.2010 15:56:16)
[#] Ответ на: комментарий от archimag 26.02.2010 15:50:17  
dave

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

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

dave ***** (26.02.2010 15:57:29)
[#] Ответ на: комментарий от archimag 26.02.2010 15:34:07  

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

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

PROOF OR GTFO? :)

anonymous (26.02.2010 15:59:44)
[#] Ответ на: комментарий от EvilBlueBeaver 26.02.2010 15:56:16  

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

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

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

lester **** (26.02.2010 16:03:24)
[#] Ответ на: комментарий от anonymous 26.02.2010 15:59:44  

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

archimag ** (26.02.2010 16:07:14)
[#] Ответ на: комментарий от lester 26.02.2010 16:03:24  
EvilBlueBeaver

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

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

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

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

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

EvilBlueBeaver * (26.02.2010 16:09:42)
[#] Ответ на: комментарий от EvilBlueBeaver 26.02.2010 16:09:42  

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

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

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


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

lester **** (26.02.2010 16:14:39)
[#] Ответ на: комментарий от anonymous 26.02.2010 15:14:28  

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

О чем ты?

anonymous (26.02.2010 16:19:28)
[#] Ответ на: комментарий от EvilBlueBeaver 26.02.2010 16:09:42  

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

> closure

> closure

> closure

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

anonymous (26.02.2010 16:21:17)
[#] Ответ на: комментарий от archimag 26.02.2010 13:23:34  
Kuka

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

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

> Потому что программы на 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 ** (26.02.2010 16:21:34)

О Сервере - Правила форума
http://www.linux.org.ru/

Rambler's Top100 Рейтинг@Mail.ru