LINUX.ORG.RU
ФорумTalks

Более лучший Лисп

 


3

9

Что бы вы изменили и каким образом в своем любимом/нелюбимом диалекте Лиспа, чтобы он стал ещё лучше? Расскажите обо всех своих грязных фантазиях.

Лиспосрач (и те два унылых анонимуса) не приветствуется.

Перемещено tazhate из development

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

стратегию работы с не валидными строками

в CL сигналить кондишены, затем обрабатывать ошибки в хендлерах, затем продолжать выполнение с места ошибки.

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

Вы может имели ввиду наоборот Лисп-1 (a b c) более стройный нежели Лисп-2 (funcall (function a) b c)?

Короче же: (funcall #'a b c)

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

Надо будет почитать матчасть, так как я понял что вроде это благородным серам в треде и не нравится

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

Стандартную библиотеку можно и переписать.

Т.е. еще 50 лет пилить новый лисп и понять, что он негодный?

ФП я осилил. Так что я против ФП принципиально и сознательно. ФП не должно быть. Его надо давить и истреблять везде, куда оно проникло.

Это почему? То же самое я могу сказать и про ООП и про императивщину. Что такого плохого в ФП? С примерами, плз.

Намекаю - в Java есть и опциональная динамическая типизация.

И настолько жирная VM, что вменяемым людам жаба на...не нужна.

А где есть вменяемые пространства имен? Хочу, чтоб было как в Java.

Тогда пиши на java, нэ? Зачем из окаменелости делать г.но?

И это хорошо. Это единственное, что в лиспе хорошо. Все остальное - плохо.

Java хуже.

Короче, я хочу Java, но с синтаксисом Лиспа.

Clojure? Kawa? ABCL?

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

C перлом у них тоже разная область применения, а вы сравнили. Да и это примеры вполне достойных компиляторов. Пусть и в .net/jvm

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

Что такого плохого в ФП? С примерами, плз

сейчас тебе расскажут о том, что мир вокруг императивен и ОО-модель органично ложится на этот самый мир.

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

C перлом у них тоже разная область применения, а вы сравнили. Да и это примеры вполне достойных компиляторов. Пусть и в .net/jvm

Хмм, ну это меня значит в заблуждение ввели всякие Википедии. Помоему по большей части совпадают области применения: - замена шеллов для средних и больших скриптов - веб - простые ГУИ

А в чем отличие области применения?

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

Это еще больше убеждает в том, что лисп - инструмент сольных разрабов.

И мне это больше всего нравится в лиспе ;)

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

tcl - язык общего назначения, в т.ч. GUI-приложения (причем достаточно сложные, так же как и в случае с тем же Python с перепиской числодробилок на C/Fortran), серверы, тестирование, сайты, web-приложения, в качестве языка для встраиваемых систем (tcl jimm), в качестве «клея».

Perl - изначально ориентирован на скриптоту. Tcl-же это некая альтернатива жабе со всеми вытекающими. А использование его в качестве скриптового - просто следствие очень простого и удобного синтаксиса.

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

лисп с его инкрементальной разработкой, когда образ лиспа может изменяться часами или даже днями

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

Это неверное заключение, с одним активным образом лиспа могут одновременно работать несколько человек, поэтому тут минусов нет — одни плюсы. А плюсы очень весомые, особенно если останов системы — убытки на миллионы.

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

Никогда бы не подумал...

А почему, собственно, нет? :) Язык сложный, многогранный. Почитайте его историю создания и развития, Вам много нового откроется. Я тоже его раньше воспринимал как «скриптовый», пока не начал на нем работать.

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

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

Ты не понял контекста.

если останов системы — убытки на миллионы

...то делается резервирование.

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

А разве это не так?) Вообще есть ли в какой-нибудь книжке философское сравнение императивного и функционального?

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

А поделитесь что именно в Tcl уже сделали?

На данный момент пишу клиентское приложение, которе цепляется к серверу, получает и обрабатывает списки, по которым формируется сам гуй и функционал. После обработки данные посылаются на сервак. Если коротко и без подробностей (описывать полностью - лень). Для интереса перенес тот же код на python - получилось в 1.5 раза длинее, чем уже есть.

И чего вам сейчас в Tcl не хватает в сравнении с CL?

Всего хватает, даже перекрывая CL (не отрицаю, что может просто не умею его готовить правильно). XOTcl тот же мне больше понравился, чем CLOS (собственно поэтому tcl и взял а не лишп, как раз выбирал между CL и Tcl).

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

Просто редко бывает так, чтобы все было хорошо. В чем-то выигрываем, в чем-то проигрываем. Лисп дает слишком много свободы, что не совсем хорошо для группового программирования, а вот, для программирования в одиночку или небольшими группами - в самый раз. Для больших групп, где всегда найдутся балбесы, лучше использовать Java или C#.

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

Не так. Почитай «Теория игр» базовый курс. Там очень хорошо описано как можно представить почти любое принятие тобой решения как некую мат.модель. Через математику и ФП можно описать все. Было бы желание. Применение ООП повсеместно тоже далеко не является панацеей и не до чего хорошего не доводитю

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

...то делается резервирование.

Причем здесь резервирование? Систему обновлять нужно, а останавливать нельзя.

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

А почему, собственно, нет? :) Язык сложный, многогранный.

Я, конечно, Tcl практически не знаю, но зато знаю джаву и её любят не за «сложность и многогранность». CL на порядок ближе к заменителю джавы (да чего мелочиться, он во всех областях превосходит джаву кроме наличия кучи библиотек искаропки), нежели Tcl.

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

А есть Tcl-конпилятор/среда сравнимая по скорости с SBCL? Просто на уровень производительности Python/Perl/Ruby я не согласен — уже наелся.

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

Да, запись (funcall (function a) b c) строго эквивалентна (a b c). И та и другая вызывают глобальную функцию с именем a.

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

Ну, т.е. не глобальную, а называемую символом a из текущего пакета.

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

Да, запись (funcall (function a) b c) строго эквивалентна (a b c). И та и другая вызывают глобальную функцию с именем a.

А надо параметр функции test-it-first, ВНЕЗАПНО.

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

Я понимаю о чём вы. :) У lisp-1 и lisp-2 возникает путаница в разных местах, но т.к. lisp-2 чуть более многословный при использовании лямбд, его чуть проще выставить ущербным... да.

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

Я не называл его ущербным, мне просто Лисп-1 ближе и понятнее. А проблема параметра и функции с совпадающими именами мне кажется не такой страшной, как непреднамеренное подцепление внешней функции.

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

И то и другое обычно находится при компиляции. А если не повезёт, то они становятся одинаково страшными.

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

И настолько жирная VM, что вменяемым людам жаба на...не нужна.

Как раз VM в жабке довольно ничего - более вменяемую в плане скорость+gc+jit+MT+настройка и открытую я просто не видел (да, я помню про потребление памяти - драйвера и прошивки роутеров писать ни кто и не предлагает). Подозреваю, аналог эклипса на тикле (мы не обсуждаем - нафиг он такой красивый нужен) просто бы не влзетел, а на свободных версиях CL тормозил много заметнее. Но в силу «больших архитектурных различий» jvm с CL тот-же abcl получается всё-же довольно тормознутым.

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

Ну это, вроде как, реализуется простым макросом.

Нет.

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

А что не так с тиклем во внешности? (как понимаю имеется ввиду тк). Или темы религия не позволит использовать? По поводу «нетормознутости java» - сколько не щупал на ней систем, все одно - тормознутое г.вно, abcl - тому доказательство

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

Ну компилятор моно/.net, вполне по скорости sbcl. Если не ошибаюсь activetcl еще неплох и jim tcl. Но к сожалению не замерял. Производительнее рубей однозначно. Тестов не проводил, но под наши не самые скромные потребности вполне хватаетю

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

Синтаксис, в т.ч. a.b.

Синтаксис a.b не имеет смысла с точки зрения CLOS.

Ну и нормальные, простые, человечные циклы for ... break ... continue.

Чего из этого нет?

try...finally, а не unwind-protect

В чём вообще разница?

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

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

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

Ну, vi у них нет, так что это так. :)

(минус путаница в терминах)

naryl ★★★★★
()
Последнее исправление: naryl (всего исправлений: 1)
Ответ на: комментарий от vertexua

вычислительных выражений f#

вкратце в чем суть?

Синтаксический сахар по типу нотации do, но умеющий также обрабатывать псевдо-императивный код вроде циклов, что важно для таких гибридных языков как f#.

dave ★★★★★
()
Последнее исправление: dave (всего исправлений: 1)
Ответ на: комментарий от dave

Синтаксический сахар по типу нотации do, но умеющий также обрабатывать псевдо-императивный код вроде циклов

А какое отличие от for в scala? Он же по типу do

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