Создать тему  Создать ответ 
Common Lisp: ASDF, quicklisp
23-12-2013, 02:43    
Сообщение: #1
Quasus

Гоф-фурьер
Сообщений: 625
Зарегистрирован: 17.06.12

Common Lisp: ASDF, quicklisp
Собственно, вопросов у меня нет. То есть я не эксперт, но "для жизни" хватает. Однажды я даже собирался написать "ещё один туториал", но так и не написал. Незавершённость. :( Так что создаю эту тему.
Найти все сообщения
Цитировать это сообщение
23-12-2013, 03:23    
Сообщение: #2
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

RE: Common Lisp: ASDF, quicklisp
В каких задачах есть смысл использовать CL?

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
23-12-2013, 04:39    
Сообщение: #3
Quasus

Гоф-фурьер
Сообщений: 625
Зарегистрирован: 17.06.12

RE: Common Lisp: ASDF, quicklisp
Он же Тьюринг-полный, везде можно использовать.

Если смотреть с позиции домашнего программирования (то есть моей), есть некоторый напряг с графикой. Напряг, пожалуй, абстрактный, потому что есть библиотека LTK, которая позволяет работать с Tcl/Tk, и для нужд домашнего программирования её более чем достаточно. Хотя было бы гораздо веселее, если бы Tk был доступен через FFI.
Найти все сообщения
Цитировать это сообщение
23-12-2013, 04:42    
Сообщение: #4
Quasus

Гоф-фурьер
Сообщений: 625
Зарегистрирован: 17.06.12

RE: Common Lisp: ASDF, quicklisp
А, ещё пользователей Windows обычно волнуют одиноко стоящие исполняемые файлы. Они у лиспов получаются зело большие, это да. Кроме самой программы упаковывается "жизненная среда". Зато если программа станет больше, размер файла практически не увеличится.
Найти все сообщения
Цитировать это сообщение
23-12-2013, 04:46    
Сообщение: #5
Quasus

Гоф-фурьер
Сообщений: 625
Зарегистрирован: 17.06.12

RE: Common Lisp: ASDF, quicklisp
А также область применения - ПМЖ в REPLе, но тогда надо быть лиспником.
Найти все сообщения
Цитировать это сообщение
23-12-2013, 04:50    
Сообщение: #6
Python

Senior Member
Сообщений: 462
Зарегистрирован: 11.07.12

RE: Common Lisp: ASDF, quicklisp
(23-12-2013 04:39)Quasus писал(а):  Он же Тьюринг-полный, везде можно использовать.
Да, но использование того или иного языка для той или иной задачи может создавать некоторые (не)удобства. Для каких задач CL наиболее удобен?

Если сравнивать со Scheme, CL в стандарте не поддерживает хвостовую оптимизацию. Это как-то усложняет работу программиста?..

LF agent
Вебсайт Найти все сообщения
Цитировать это сообщение
23-12-2013, 19:15    
Сообщение: #7
Quasus

Гоф-фурьер
Сообщений: 625
Зарегистрирован: 17.06.12

RE: Common Lisp: ASDF, quicklisp
С точки зрения любительского программирования какой язык лучше знаешь, тот и удобней. :)

Пропагандисты лиспа (Грэм, например) продвигают мысль, что лисп - очень расширяемый язык, который сам подстраивается под любую область. Можно настраивать под себя синтаксис - макросы.

Без хвостовой оптимизации, мне думается, жить можно. Практически это вопрос организации циклов. В CL есть на выбор куча средств: функции фильтрации/map/сворачивание последовательности, куча циклов: простой loop, do, сложный loop, популярная библиотека iter (к вопросу об ASDF и quicklisp), если не считать dolist и dotimes. Если есть желание, легко написать свои циклы: например, do-чего-нибудь, аналоги for или while. Я люблю пользоваться анафорическим awhile: это как в перле, внутри цикла условие доступно через переменную (традиционно it):
Код:
(awhile (read-line my-stream nil nil)
  (do-stuff it)
  (do-more-stuff-it))

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

Кстати, что до хвостовой рекурсии - это на самом деле вопрос философский. Потому что, насколько понимаю, формальное определение хвостовой рекурсии завязано на континуации. В лиспе их не бывает. Зато есть динамические переменные, что затрудняет определение хвостовой позиции. Кроме того (хотя такие теоретические моменты я уже с трудом понимаю), хвостовая рекурсия, наверно, может конфликтовать с идеей прыгания по стеку, например, с помощью состояний (conditions) и рестартов.
Найти все сообщения
Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)