LINUX.ORG.RU

Ответ на: комментарий от yyk

> Ага, страница кода конечно лучше, чем два десятка строк - вопросов нет!.. :)

Кода у меня больше, но как раз из-за того что у меня это написано как нормальный production код, а у них грязыный хак.

>> 1. Отдельный класс на парсер. У них просто разбирают строки в main-e У меня есть возможность использовать Parser повторно

> А на лиспе кто-то запрещает код использовать повтороно? Там только пример. Переделать на функции - больше кода не станет :)

Сделаешь функцию, появится лишняя строка. Я могу использовать функцию parse(), а не клас Parser, на этом я сэкономлю строки 4, но я этого делать просто не хочу.

>> 2. Отдельный классы на SystemObject, ServiceCall, Usage. Т.е. возможность объявить разные методы у разных классов.

> Ну а там лепи себе defmapping под свои нужды - и всех делов. Хоть ещё для десятка типов. В чём твоё преимущество?

Они создают пустой класс, в том что у меня используются _разные_ классы ServiceCall и Usage объявленные отдельно (4 строки), у них же в макросе создаётся пустой класс, т.е. нет возможности добавить к разным классам разные методы и т.д. Конечно, можно объявить класс отдельно, и передать его в макрос вместе с параметрами строки для разбора, но это опять таки приведёт к росту кода.

>> 3. Переопределённый __str__. У них насколько я понял, используется стандартное строковое представление объектов.

> Вот тут я тебя не понял.

В Питоне, если ты отправишь на печять объект для которого не определён __str__(), просто напишет что это объект такого-то класса по такому-то адресу, а значения атрибутов объекта не выведет. Я этот метод определил для своих объектов (3 строки). В том примере, насколько я понял, используется стандартный вывод Лисповых объектов.

>> 4. Четвёрка у меня именнованная константа, у них magic number

> Это даже не смешно. Это же был пример на скорую руку. Ещё одна строка кода - всего-то. Или более того - вынести не 4-ку, а (subseq line 0 4) (а то и вместе с internal) в функциональную переменную, и определяй себе тип как твоей душе угодно.

Ну не скажите Фёдор Михалыч, десять старушек --- рубль.

Вот, так у них там сэкномили пару строк, здесь сэкономили. Вот и получился код компактный. На питоне, тоже можно довести этот пример до одной строки (см. Obfuscated Python выше :-), но я просто не хочу и не буду этого делать. Readability Counts

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

>> Ага, страница кода конечно лучше, чем два десятка строк - вопросов нет!.. :)

> Кода у меня больше, но как раз из-за того что у меня это написано как нормальный production код, а у них грязыный хак.

Ты _действительно_ думаеш что чем более замысловат и логически длинён код тем более production?

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

> Кода у меня больше, но как раз из-за того что у меня это написано как нормальный production код, а у них грязыный хак.

Хак на лиспе? Это что-то новенькое... ;)

> Я могу использовать функцию parse(), а не клас Parser, на этом я сэкономлю строки 4, но я этого делать просто не хочу.

Т.е. на голом месте добавил новую сущность и рад по уши? :)

Ладно, "нравится" тебе питон - используй его. А раз маленькие примеры тебя "не вдохновляют" (хотя может и дейсвительно ты ещё не увидел чему здесь вдохновляться) - посмотри что-нибудь по-больше. Не хочешь loop смотреть - посмотри на CLSQL. Он понятнее :)

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

> Ты _действительно_ думаеш что чем более замысловат и логически длинён код тем более production?

Нет я так не считаю.

Идеальный код находится где-то между длинной и страшной телегой на C# и ацким onelinerом на Лиспе (включая концы).

Вопрос в том где он. Ты считаешь что там где Лисп. Я так не считаю.

Ты действительно думаешь что критерий качества кода только один --- минимальный размер?

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

> Хак на лиспе? Это что-то новенькое... ;)

1. На лиспе не бывает грязных хаков

2. Если ты встретил гоязный хак на лиспе, смотри пункт 1 o_O

> Ладно, "нравится" тебе питон - используй его. А раз маленькие примеры тебя "не вдохновляют" (хотя может и дейсвительно ты ещё не увидел чему здесь вдохновляться) - посмотри что-нибудь по-больше. Не хочешь loop смотреть - посмотри на CLSQL. Он понятнее :)

Да надо будет как-нибудь посмотреть...когда время будет.

А какой реализацией Лиспа лучше пользоваться, чтобы работал на Win32, были ебилды и чтоб был байндинг к Qt или wx, и желательно open-source?

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

> Ты действительно думаешь что критерий качества кода только один --- минимальный размер?

Я считаю что критерием качества кода является минимальный _логический_ размер. см. те же перестановки. Для осуществления пришлось применять ряд сущностей, которые не нужны для решения задачи но являются необходимыми чтобы объяснить компу, что от него собственно требуется.

> грязных хаков

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

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

> А какой реализацией Лиспа лучше пользоваться, чтобы работал на Win32, были ебилды и чтоб был байндинг к Qt или wx, и желательно open-source?

Если есть ебилды cLisp - бери его. Если не страшно заниматься сборкой sbcl под винду (он там вроде собирается только сам собой - надо тянуть с sf.net бинарник не самой свежей версии и собирать) - бери его: скорость порадует (особенно по сравнению с питоном :))

"байдинги" ищи отдельно на cliki.net common-lisp.net www.cl-user.net

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

> были ебилды

ебилды есть для clisp, sbcl, cmucl, mcclim... Больше пока не искал...

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

Раз уж затеяли сей импровизированный PR для лиспа, еще два вопроса:

1. Есть ли какие региональные lisp community (user groups) в России или Украине?

2. Есть ли нормальные русскоязычные ресурсы по лиспу?

По аналогии с питоном тыкнулся в lisp.ru и lisp.org.ru. Первый 'Under construction' ;-), а второй -- англоязычен. По гуглу нашел вот это: http://lisp.ystok.ru/ru/links.html. Как я понял, это только набор ссылок, хотя и не плохих.

Более конкретно, чем пользуются лисперы (совсем конкретно -- уважаемые yyk и bugmaker) для междусобойчиков? Или от недостатка ресурсов живут на общих типа ЛОР?

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

> Более конкретно, чем пользуются лисперы (совсем конкретно -- уважаемые yyk и bugmaker) для междусобойчиков?

Лично я не вижу необходимости в "междусобойчиках". Лисп настолько простая штука, как полено, что обсуждать безсмысленно а все проблемы решены годы и десятилетия назад. Впрочем иногда не прочь поболтать на канале #lisp в irc.freenode.net.

Вот здесь есь стартовый пакет, с учебниками, факами и прочим:

http://cl-cookbook.sourceforge.net/index.html

Особое внимание ИМХО стоит уделять HyperSpec и http://cliki.net. Первое - справочное пособие которое лучше всегда держать под рукой, второе - хорошо коментированный набор ссылок на разнообразные штуковины, полезные для разработчика: библиотеки, реализации лисп-машин и прочее.

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

>А какой реализацией Лиспа лучше пользоваться, чтобы работал на Win32, были ебилды и чтоб был байндинг к Qt или wx, и желательно open-source?

Пока рекомендую CLISP, если желательно open-source. SBCL для Windows имеет только экспериментальную поддержку в CVS. Это означает, что запустить, наверное, что-то сможешь, но полную поддержку пока не получишь. Будешь сам собирать? Компилятор SBCL на 99% сам на себе написан. Я пока не рисковал этим заниматься. Я только колупался в исходниках из любопытства, чтобы посмотреть, как SBCL генерирует машинные коды и как оптимизирует. :)

Байндинг к Qt есть только такой:

http://lisp-cffi-qt4.sourceforge.net/

A very basic attempt based on the dynamic Qt capabilities (see QMetaObject). Currently it's (maybe) more of a toy and still in planning phase. To extend it you need some Qt knowledge.

Should work with any CFFI enabled Lisp (currently FreeBSD, Linux, Win32) Tested with CLISP (Linux, Win32), ECL (Linux, Win32) and SBCL (FreeBSD, Linux).

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

> 1. Есть ли какие региональные lisp community (user groups) в России или Украине?

Мне такие не известны.

> 2. Есть ли нормальные русскоязычные ресурсы по лиспу?

Что есть "нормальные"?

есть fido7.ru.lisp. Народу там не много, и тишина почти всегда, но за эхой следят и отвечают на вопросы почти всегда :)

> Более конкретно, чем пользуются лисперы (совсем конкретно -- уважаемые yyk и bugmaker) для междусобойчиков? Или от недостатка ресурсов живут на общих типа ЛОР?

Если сил перевести свой вопрос на английский нет - в указанную эху. А так чаще в форуме конкретного лиспа либо на comp.lang.lisp со всем непрофильным :)

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

> Вопросик а как насчет practical common lisp?В pdf есть вроде хорошая книжка. Где-то перевод есть?

Перевода нет практически ничего. Кроме финнов (но там не CL) и sicp (а это вообще схема).

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

> Да, не удивишь. Но догнать его так никто и не смог...

Мне одному вспомнился анекдот про неуловимого Джо? 8)

> Или уже есть язык, в котором всю его мощь можно использовать для кодогенерации, причём в теле основной программы, а не внешним/сторонними трансляторами?

Мне упорно приходит на ум PL/I. Что-то очень похожее там было. Но я на PL/I уже почти 15 лет не работаю.

>... Охренеть можно.

Это было перечисление заботливо разложенных подводных камней и граблей Лиспа? Или Перла? По-моему, в Лиспе макросы можно вдурную использовать - как два байта переслать.

> хотя питону такое и не снилось

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

Ну да, в понедельник пишем синтаксис, в пятницу - вспоминаем, что там что значит 8)

В Питоне тоже можно сделать расширяемый синтаксис: http://www.fiber-space.de/EasyExtend/doc/gallery/gallery.html

только зачем?

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

> Мне одному вспомнился анекдот про неуловимого Джо? 8)

Ах ты блин... Как по одному, так "этим никого не удивишь", а как всё вместе - "а нафиг кому надо"... Неа, не нужен вам лисп :)Ь

> Это было перечисление заботливо разложенных подводных камней и граблей Лиспа? Или Перла? По-моему, в Лиспе макросы можно вдурную использовать - как два байта переслать.

Лиспа. А "вдурную" - это не к языку, а к кодеру :)

> Ну да, в понедельник пишем синтаксис, в пятницу - вспоминаем, что там что значит 8)

Ок, в надцатый раз: loop, CLSQL, etc...

> В Питоне тоже можно сделать расширяемый синтаксис...

Кастыль.

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

>> Ну да, в понедельник пишем синтаксис, в пятницу - вспоминаем, что там что значит 8)

> Ок, в надцатый раз: loop, CLSQL, etc...

Э нет... loop - это стандарт, CLSQL - тоже, в общем-то. А речь шла о _своих_ синтаксисах, разве нет?

>> В Питоне тоже можно сделать расширяемый синтаксис...

> Кастыль.

Ибо не труЪ, ибо не Лисп.

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

> Э нет... loop - это стандарт, CLSQL - тоже, в общем-то. А речь шла о _своих_ синтаксисах, разве нет?

Значит, отбрасываем XML, HTML, прочие структурные форматы... Конечно, каждый день и для каждой проги свой синтаксис не нужен. Но по анологии с with-open-file свои with-XXX пишутся практически в каждой второй проге. В любом случае, это млжно сделать в любой момент "здесь и сейчас", а потом подгрузить при надобности. А не писать патч к самому языку (компилятору/интерпретатору) или макрокомпилатор к нему и потом тащить это от версии к версии и использовать через... ну, вы в курсе :)

> Ибо не труЪ, ибо не Лисп.

Ибо не предусмотрено стандартом языка, и, как следствие, это уже не питон, а "грязный хак" и нечто питонообразное... :)

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

> В Питоне тоже можно сделать расширяемый синтаксис

А лисп сам по себе расширяемый синтаксис. Чуем разницу?

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

>> В Питоне тоже можно сделать расширяемый синтаксис

> А лисп сам по себе расширяемый синтаксис. Чуем разницу?

Честно говоря, нет (некоторые, кстати, считают, что в Лиспе вообще отсуствует синтаксис).

Как в Лиспе определить, например, Си-шный синтаксис для for? Чтобы с ';' и фигурными скобками? Или Питоновский синтаксис для list comprehensions? Да хоть что-нибудь, _не_ являющееся правильным Лисповым списком? По-моему, _синтаксис_ Лиспа не расширяем вообще - всё в прокрустовом ложе списков.

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

Там выше по треду есь ссыло на sweet-code. Эта приблуда позволяет лиспобыдлокодить в более привычном синтаксисе - открывающяяся скопка после имени функции, инфиксные оператоы итп. Посмотри как там сделано.

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

Так это просто парсер, написанный на лиспе. Такое можно и на Питоне сделать, и на Си. Правда, сложнее получиться, да.

Интересная вещь - кучу инструментов, написанных на Лиспе, его любители засчитывают как возможности _самого языка_. При этом аналогичные инструменты, написанные на других языках - "кастыли".

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

>Как в Лиспе определить, например, Си-шный синтаксис для for? Чтобы с ';' и фигурными скобками? Или Питоновский синтаксис для list comprehensions? Да хоть что-нибудь, _не_ являющееся правильным Лисповым списком? По-моему, _синтаксис_ Лиспа не расширяем вообще - всё в прокрустовом ложе списков.

Первое, что я хочу сказать: Мсье извращенец? Во-первых, это просто не нужно. Но если очень нужно, то

Второе. Можно! Все лисповые функции читаются функцией read, которая и есть парсер. Изначально он "натаскан" на LISP-программы в виде s-expressions). И вот этот самый read настолько параметризуем (в самой же LISP-программе!), что ты можешь даже Lisp не узнать. То есть у тебя будет тот же самый REPL, но ты сможешь пользоваться новым синтаксисом, но он внутри LISP после эвалуации превратится в нормальный лисповый объект.

Пример: REPL> #c(0 1)

Это не s-expression. Внутри себя видит как (complex 0 1). В onlisp естьпримерчик реализации

REPL> #[2 7] (2 3 4 5 6 7)

Насчет реализации синтаксиса C и Python через read я не слышал (только психу это может понадобиться). Однако есть проект, в котором реализован python. Он называется CLPython. Прямо в REPL программируешь на питоне, а он тебе в результате LISP-объекты создает и работает. Недавно где-то саныч новость об этом постил.

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

Вау! На Лиспе можно написать парсер! Да, такое не каждому языку под силу. А потом результат работы прасера можно скормить интерпретатору Лиспа? Ну афигеть, вау!

Нет, постой... Это ж такое на любом интерпретируемом языке жожно сделать. А! _Любой_ язык имеет расширяемый синтаксис! Вот что хотели сказать лисперы!

Для тех, кто в танке - насколько можно расширить синтаксис Лиспа, не прибегая к написанию специальных парсеров? Не переопределяя read, read-table, или еще что-нибудь такое.

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

> Такое можно и на Питоне сделать, и на Си.

Ты не повериш, даже на асме можно. И на любом тьюринг-полном. Это же не причина всё бросать и юзать всякие брайнфак, уайтспейс и питон. Хотя на сях, бывает, имеет смысл делать. Эзотерический смысл, добавил по совету супруги.

> Правда, сложнее получиться, да.

Не суть важно что сложнее, а суть _почему_ сложнее.

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

>> Правда, сложнее получиться, да.

>Не суть важно что сложнее, а суть _почему_ сложнее.

Если синтаксис будет отличаться от Лиспового, то написать парсер на Лиспе - не проще, чем на Питоне. А то, что в Лиспе парсер входного языка интегрирован в runtime и может быть заменен - интересная фишка, которая ни на что особо не влияет.

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

Фактически, в лиспе два языка с одинаковым синтаксисом - язык исполняемый и язык макросов. Интерпретатор можно на любом езыке произвести, а вот для метапрограммирования нужен достаточно мощный язык макросов, тьюринг-полный. Метапрограммирование - это не написание интерпретатора и не настройка парсера, а как раз преобразование исходников.

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

> Если синтаксис будет отличаться от Лиспового, то написать парсер на Лиспе - не проще, чем на Питоне.

Бугога.

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

>> Если синтаксис будет отличаться от Лиспового, то написать парсер на Лиспе - не проще, чем на Питоне.

>Бугога.

Достойный ответ, ага 8)

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

> Он называется CLPython

А я в одной умной книжке видел реализацию CL на Форте.

Это к вопросу о метапрограммирования ;-). И о "неотлавливаемости ошибок в Форте" ;-).

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

>> некоторые, кстати, считают, что в Лиспе вообще отсуствует синтаксис

> спасибо, подр^Wпосмяялсо :D

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

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

> Так что, смех без причины...

Ты знал! Ты знал!

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

> По-моему, _синтаксис_ Лиспа не расширяем вообще - всё в прокрустовом ложе списков.

Ну, строки-то они как-то умудрились расширить. Правда, совершенно не представляю себе, как можно реализовать текстовые фильтры, где обычно рулят sed/awk/sort/perl, исключительно с помощью средств Лиспа.

Ну вот, скажем такая задачка: во сколько строк на Лиспе реализуется нечто, аналогичное sed, awk или sort?

Кстати, никто так и не ответил мне, есть ли в emacs строково-системные фильтры в стиле vi?

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

> Что есть "нормальные"?

Не under construction. ;-)

И желательно, на русском языке.

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

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

Аха. Особенно проблемы биндинга к gtk. Особенно для меня ;-).

Новичков нужно любить -- они могут оказаться потенциальными лисперами. Будьте проще -- и люди к вам потянутся.

Может быть, проблема маргинальности лиспа именно в этом? В том, что каждый лиспер -- сам себе мудрец в башне из слоновой кости? Впрочем, по стилю yyk в это легко поверить ;-).

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

> Аха. Особенно проблемы биндинга к gtk. Особенно для меня ;-).

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

> В том, что каждый лиспер -- сам себе мудрец в башне из слоновой кости?

На ирц нормальный пипл тусуецо, нефих бочку катить. А так, да, лисп-дзен извесное явление, нужное и полезное.

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

>Ну, строки-то они как-то умудрились расширить. Правда, совершенно не представляю себе, как можно реализовать текстовые фильтры, где обычно рулят sed/awk/sort/perl, исключительно с помощью средств Лиспа.

Ну никто тут не бросится писать awk или sed на лиспе (вопрос здравого смысла: "а зачем реализовывать awk на лиспе?". Спортивный интерес?). Максимум, что можно сделать -- это ткнуть куда-нибудь новом в то, что кто-то сделал.

CL-PPCRE: http://weitz.de/cl-ppcre/

Что касается фильтров, то более конкретно:

http://weitz.de/cl-ppcre/#filters

Примерчики есть. Сканирование после определения функции сканирования вызывается при помощи scan: http://weitz.de/cl-ppcre/#scan

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

> вопрос здравого смысла: "а зачем реализовывать awk на лиспе?". Спортивный интерес?

Ответ очень простой: практический интерес. Ежедневная рутина по обработке логов. Или (о ужас!) правоверные лисперы признают, что кроме Лисп нужно знать еще что-то?

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

> А какая может быть трабла с биндингом?

Да вот хотя бы такая:

#-:gtk (use-package :gtk)

*** - USE-PACKAGE: There is no package with name "GTK" The following restarts are available: USE-VALUE :R1 You may input a value to be used instead. ABORT :R2 ABORT ABORT :R3 ABORT

То есть, я понимаю, что у меня gtk нет, не тупой. Но что делать? Где взять и куда положить, чтоб поехало? Вообще, есть какая-то step-by-step howto? Или, как всегда у лисперов -- сплошной дзен?

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

>Ответ очень простой: практический интерес. Ежедневная рутина по обработке логов. Или (о ужас!) правоверные лисперы признают, что кроме Лисп нужно знать еще что-то?

Я сейчас начну объяснять, а ты взамен начнешь мне предлагать что-то реализовать. :) Гы.

Объясняю. Выше я дал ссылку на проект реализации быстрых регэкспов (заявляют, что быстрее перловых. подкреплено внизу тестами). Есть фильтрация. Как делается она понятно? Создаешь функцию, которая что-то делает, когда срабатывает регэксп (примеры выше). Чтение/запись из файлов есть. Функции по работе со строками есть. Вместо awk выступает сам Common Lisp. Вот я и спрашиваю: зачем awk, когда есть все? Самодостаточная система же.

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

> Вот я и спрашиваю: зачем awk, когда есть все? Самодостаточная система же.

Аха. Самодостаточная система. Как Лего. "Собери сам себе велсипед" называется ;-). Не, ну чо. Я однажды даже роликовые коньки из Лего собранные видел. Ничо так...

Ладно, проехали...

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

>Аха. Самодостаточная система. Как Лего. "Собери сам себе велсипед" называется ;-). Не, ну чо. Я однажды даже роликовые коньки из Лего собранные видел. Ничо так...

Бугога. А awk сам пишет программы? а sed сам скрипты генерирует? Регэкспы сами рисуются? Разве GNU -- это не строительные блоки? Здесь же ты имеешь один и тот же инструмент для такого рода работы, который уместнее сравнивать не с awk/sed/... , а с perl! Тебя не возмущает, что ему awk не нужен? :)

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

> Я могу дать step-by-step, но для sbcl.

Давай!

Когда-то я угробил уйму времени на выбор любимого языка. Потом -- любимой СУБД. Недавно закончил выбор любимого ГИП-тулкита. Теперь у меня появилась новая игрушка -- выбор любимого диалекта Lisp.

Кажется, жизнь опять начинает приобретать смысл!

Народ, а не забодяжить ли нам ветку clisp vs sbcl vs gcl? Может, и слаку переплюнем?

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

> Как в Лиспе определить, например, Си-шный синтаксис для for? Чтобы с ';' и фигурными скобками? Или Питоновский синтаксис для list comprehensions? Да хоть что-нибудь, _не_ являющееся правильным Лисповым списком? По-моему, _синтаксис_ Лиспа не расширяем вообще - всё в прокрустовом ложе списков.

Ну ты же знаешь ответ - посмотри loop и CLSQL :)))))

А на деле - это никому нафиг не надо. Хотя можно.

А что не является _правильным лисповым списком_? Списком можно обозвать всё (и соответственно обработать на лиспе) у чего есть начало и конец. И за твоим "прокрустовым ложем" списков очень сильно проглядывает "затрахали ваши скобочки", хоть ты и стараешься от этого уйти. Ну, ты уже понял, что список - это не скобочки? :)

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