LINUX.ORG.RU

Справочник CL


0

3

Когда я пишу на си или си++, читаю документацию по функциям в манах. Если не дай боже на Qt - в ассистенте. А вот какой мануал использовать по лиспу? Пока что просто гуглю что-нибудь типа «lisp format», но это надоедает. Вроде как есть офицальный гиперспек, но то ли там нет нормального поиска, то ли я им пользоваться не умею... Хочется полноценный справочник, все в одном. Желательно оффлайн.

Заранее спасибо.

★★★★★

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

+1, хотя это не последний стандарт, но его зато довольно легко читать. Common Lisp Hyperspec слишком заумный, примеров мало. Однако, интегрировать с емаксом нужно именно его.

den73 ★★★★★
()

Я пользуюсь HyperSpec'ом в формате CHM.

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

>> Я неосилятор емаксов.

Тогда забей на CL.

Забавная категоричность. Почему мне стоит забить на CL, а не на твое мнение? Нет, серьезно, почему если CL, то обязательно емакс?

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

Пушо для всего остального SLIME пока не придумали. А без SLIME пишут либо хелловорлдщики, либо Love5an'ы :) Ну или счастливые обладатели LW/прочих коммерческих сред.

Пользуй Emacs, UNLEASH THE BEAST!

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

Я пока что хеллоуворлдщик :)

Знаю, что слайм/емакс - лучшая из доступных IDE, но на данный момент необходимости в этом не чувствую, а потому и погружаться в изучение монстрика не хочется. Ну и вообще мой плюсовый опыт пока говорит не в пользу IDE (писал несколько средних проектов, 50-70к строк). Наверное многое завист от подхода к организации проектов. В общем жизнь покажет :)

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

> Я пока что хеллоуворлдщик :)
Скачай персональный лиспворкс или аллегро - для хелловордов вполне подойдёт. Без IDE будет совсем тяжко, т.к.
- всегда видно, какая скобка открывает твою закрывающую, без этого ты запутаешься в скобках быстро и навсегда; кроме того - автоотступы
- completion и поиск определений
- тот же хелп
- удобнее работать с дебаггером

В лиспворксе - тоже по сути Емакс.

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

> мой плюсовый опыт пока говорит не в пользу IDE

Emacs + SLIME не есть IDE в общепринятом смысле этого акронима.

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

>- всегда видно, какая скобка открывает твою закрывающую, без этого ты запутаешься в скобках быстро и навсегда;

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

кроме того - автоотступы

Аналогично. Кстати лисп - первый язык, где я вижу пользу и использую автоотступы :)

- completion и поиск определений

- тот же хелп

Ну вообще я противник этого. Когда постоянно ко всему за полсекунды можно получить доку, это разжижает мозг. Отдельная документация очень хорошо мотивирует запоминалку.

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

> мой плюсовый опыт пока говорит не в пользу IDE

Мой плюсовый опыт тоже не выявил пользы IDE, но CL это совсем другое

Отдельная документация очень хорошо мотивирует запоминалку.


С документацией в CL традиционно плохо. Основной способ получения необходимой документации - исследование исходного кода, но без специального инструмента это очень не удобно.

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

archimag ★★★
()

Для сочетания vim + screen есть костыль под названием slime.vim (http://old.mikeadmire.com/files/slime.vim), который позволяет легко копипастить содержимое вимовского буфера в одно из окон скрина. Довольно удобно и, кстати, работает не только с лиспами. Если используешь SBCL, сделай ещё себе вменяемую командную строку с помощью Lineedit или sbcl-readline, и этого будет достаточно для довольно комфортной работы.

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

Ну или счастливые обладатели LW/прочих коммерческих сред.

LW 6.0.1 Enterprise, пишу в Емаксе.

Вот, кстати, не сочтите за рекламу, но мне LW всё больше и больше нравится...

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

> Вот, кстати, не сочтите за рекламу, но мне LW всё больше и больше нравится...

Ну дык, сколько в него бабла вложили, да и в космос он летал уже.

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

> но мне LW всё больше и больше нравится...

А у меня LW Personal на рабочей машине тупо не запускается. На домашней запускается (страшненький такой), а на рабочей нет. Х.з. что ему надо, падает на вызове функции из gtk.

archimag ★★★
()

lispdoc.com ищет по HyperSpec , CLtL и книжкам оффлайн есть тот же HyperSpec ( в Gentoo для этого надо поставить dev-lisp/hyperspec , который выкачает с http://www.lispworks.com/reference/HyperSpec и поставит его в /usr/share/doc) , по которому в емаксе можно прикрутить поиск:

добавить в ~/.emacs

;;; lookup hyperspec doc via w3m, not firefox

(require 'hyperspec)

(defun hyperspec-lookup (&optional symbol-name) (interactive) (let ((browse-url-browser-function 'w3m-browse-url)) (if symbol-name (common-lisp-hyperspec symbol-name) (call-interactively 'common-lisp-hyperspec))))

(setq browse-url-browser-function 'browse-url-generic browse-url-generic-program «/usr/bin/luakit»)

здесь luakit замени на свой любимый браузер; тут гиперспек будет открываться w3m внутри емакса. require hyperspec — включит hyperspec.el , он должен быть установлен (погугли его)

Если стоит не Gentoo, можно те же самые действия проделать вручную: скачать wget-ом hyperspec и hyperspec.el

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

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

В kate F4 -открыть терминал, Shift+F4 - скопировать в терминал выделенный фрагмент. Для хеловордов — за глаза.

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

> Для хеловордов — за глаза

Говорить о преимуществах использования CL для написания хеловордов как-то не приходится.

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

>В kate F4 -открыть терминал, Shift+F4 - скопировать в терминал выделенный фрагмент. Для хеловордов — за глаза.

Пока даже проще наверное, довольствуюсь «clisp helloworld.cl» или «clisp < helloworld.cl», если нужно наглядно через REPL прогнать. На хелловорлде плюшек интерактивной разработки все равно ноль.

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

>Говорить о преимуществах использования CL для написания хеловордов как-то не приходится.

Говорить о преимуществах использования во многом еще незнакомого языка для написания нехелловорлдов в общем то тоже не приходится.

Это ведь не лисп превращает людей в зазнавшихся мудаков, правда?

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

> Говорить о преимуществах использования во многом еще незнакомого

языка для написания нехелловорлдов в общем то тоже не приходится.


Без использования SLIME либо другой нормальной среды (например, LW) адекватного впечатления о CL не получить.

Это ведь не лисп превращает людей в зазнавшихся мудаков, правда?


Нет, конечно. Но надеюсь это вы не про меня?

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

>Говорить о преимуществах использования CL для написания хеловордов как-то не приходится.

Отчего же? Пару лет назад сгородил себе простенький скрипт строчек на 30, пользуюсь постоянно, время от времени внося в него небольшие корректировки. Очень помогает.

Конечно, можно было взять другой язык, но CL подошел идеально (javascript пускать в консоле как-то проблематично, на perl получилось бы более громоздко и не так красиво, bash подходит еще меньше perl'а). В чем я ошибся?

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

>Пока даже проще наверное, довольствуюсь «clisp helloworld.cl»

clisp

в его REPLе можно хоть как-то редактировать текст. У меня же sbcl (по причинам, скорее историческим, а не техническим). Слышал, ему можно приделать вменяемый редактор, но, не найдя решения «в лоб», просто забил на проблему и делаю Shift+F4 в kate, если нужно.

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

>Без использования SLIME либо другой нормальной среды (например, LW) адекватного впечатления о CL не получить.

Какой ужос!!

мне пришлось пользоваться «Блокнотом» из w95 (не было даже C-s для сохранения), когда я пытался получить «адекватного впечатления» о javscript. Извини, был неправ.

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

> когда я пытался получить «адекватного впечатления» о javscript.

Хм, разве мы javascript?

Извини, был неправ.


Не стоит, ведь пострадал не я.

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

>Хм, разве мы javascript?

так ведь лисп же проще

Не стоит, ведь пострадал не я.

А кто пострадал? А-а, понял! Ты хотел сказать, что это помешало мне получить адекватное впечатление о javascript? Ну, тогда, даже не знаю, что сказать, чтоб ты не сильно расстраивался... Наверное, ты в чем-то прав, неудобные инструменты неудобны, и в отдельных случаях, это действительно может привести к тому, что вся сила и мощь некоего ЯП останется адекватно невоспринятой каким-нибудь «программистом-на-кампутире».

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

Это ведь не лисп превращает людей в зазнавшихся мудаков, правда?

Нет, это зазнавшиеся мудаки учат лисп.

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

> так ведь лисп же проще

А, я понял, вы просто спутали CL с каким-то другим языком.

> Ты хотел сказать, что это помешало мне получить адекватное
> впечатление о javascript?

Нет, я надеялся, что речь всё таки идёт о CL. Поскольку важность SLIME является неоспоримой, вот что писал Peter Seibel ещё до того, как я узнал что такое CL:

для истинного опыта Lisp программирования вам необходима среда разработки типа SLIME

Кстати, я не помнил, что он говорил этого (невнимательно читал когда-то), но просто полез сейчас в PCL и сразу обнаружил это утверждение.

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

>Нет, это зазнавшиеся мудаки учат лисп.

Ну, тут все просто, главное — бдительность. А то, чего доброго, ещё научат его... курить, там, то-се, сам понимаешь.

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

>CL проще JS? это в какой параллельной вселенной?

В нашей, анон, в нашей. Завязывай с межпространственными перемещениями.

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

>Без использования SLIME либо другой нормальной среды (например, LW) адекватного впечатления о CL не получить.

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

Но надеюсь это вы не про меня?

Про тебя конечно. Но с мудаком перегнул наверное. Прошу прощения.

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

А, я понял, вы просто спутали CL с каким-то другим языком.

Спутал? Не исключено. Что ж, можем вместе проверить. Я имел в виду это:

* (car (cons 'a 'b))
A
* (cdr (cons 'a 'b)) 
B 
* (cons 'a 'b)
 (A . B) 

Что может проще? По сравнению с этим, js — просто нелепая городушка. И это при том, что js все-таки один из самых простых и красивых ЯП.

для истинного опыта Lisp программирования вам необходима среда разработки типа SLIME

трудно спорить с очевидным, я так никогда не поступаю. Только какое отношени эта фраза имеет к вашему высказыванию:

Без использования SLIME либо другой нормальной среды (например, LW) адекватного впечатления о CL не получить

вот что писал Peter Seibel ещё до того, как я узнал что такое CL:

Позвольте, но на той книжке должна быть надпись «PCL»! Откуда там взялось «Holy Bible»??? .

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

>мне пришлось пользоваться «Блокнотом» из w95

Тоже довольно долго писал в блокноте, в том числе и яваскрипт. Считаю это исключительно полезным опытом.

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

>Считаю это исключительно полезным опытом.

Не знаю насчет пользы, но тогда, по факту, и выбора особо не было. Да что там выбора — информация была труднодоступна «мы просто не знали, что бывает иначе». Промучившись с полгода, прочел случайно об ультраедите, и настало мне щщасьтие на долгие годы (ну, почти, несколько напрагало отсутствие нормального моноширинного без засечек шрифта)

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

Видимо я в очередной раз делаю что-то не так, раз получаю впечатление от языка, а не средства... взаимодействия с ним.

В данном случае, средство взаимодействия - это существенная часть языка. Кластер на реплах ты, может, и никогда не напишешь, за ненадобностью, но slime+swank тебе дадут прочувствовать всю прелесть репла. Особенно хорошо, когда подключаешься к уже бегущему процессу на серваке в подвале бостона из далёкой Сибири и спокойно фигачишь код, как будто всё локально. Исходники, кстати, можно и локальные юзать, и с того же или другого сервака, в Емаксе tramp-mode очень замечательный есть. В процессе ваяния кода можно отвлечься на чтение почты и языкочесание под джабберу тут же в Емаксе. В сложных рабочих и жизненных ситуациях можно пообщаться с доктором. А как устанешь, то не грех и сыграть во что-нибудь: тетрис какой встроенный, либо попытаться отловить баг в функции из емаксовской объектной системы (одной из) Luna, которая генерится и существует только в трудноуловимом замыкании - кому какие игры нравятся. Всё это, несомненно, важная часть рабочего процесса лиспера.

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

> да уж где нам, дуракам, чай пить?

Хорошо, тогда спрошу так - ты знаешь, что в CL помимо cons cells есть множество других встроенных типов данных - символы, пакеты символов, массивы - многомерные, одномерные и битовые вектора, хэш-таблицы, readtables, pathnames, потоки (streams), структуры, объекты? Ты знаешь, что CLOS и condition system сложнее и мощнее JS-ного прототипного ООП и системы исключений в разы?

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

>Всё это, несомненно, важная часть рабочего процесса лиспера.

Несомненно. Но, заметь, ты говоришь именно о _рабочем процессе_ , а не о «адекватном полученни впечатлений». Для рабочего процесса, для эффективной его организации, важен подбор инструментов, желательно самых лучших (спорить с этим возьмется только конченый недоумок, тут таких пока не видно).

Для целей же ознакомления, «получения впечатлений» и выполнения эпизодических манипуляций с лиспокодом, использование специального инструмента не обязательно: масштаб не тот, негде ему раскрыть свой потенциал в полной мере, значит, эффективность его будет сравнима с инструментами универсальными, а скорее даже ниже, т.к. придется параллельно осваивать инструмент.

В данном случае, средство взаимодействия - это существенная часть языка.

Я бы не назвал частью языка средство, облегчающее взаимодействие с repl'ом. Да, оно может замечательно продемонстрировать «взрослые» подходы и приемы, применяемые в рабочем процессе. Но опять же, что там было насчет преждевременной оптимизации?

Во вторых, лисп — не единственный ЯП с REPLом. Да что там, практически любой sql — это «когда подключаешься к уже бегущему процессу на серваке в подвале бостона из далёкой Сибири и спокойно фигачишь код, как будто всё локально». Но ты же не скажешь, что какой-нибудь bdeexplorer или phpMyAdmin — это существенная часть языка? (и крутость емакса тут роли не играет)

Кстати об емаксе. С чего бы он с таким аппетитом (под 100%) мог проц кушать?

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

Несомненно. Но, заметь, ты говоришь именно о _рабочем процессе_ , а не о «адекватном полученни впечатлений».

Абсолютно упругий сферический лиспер в вакууме получает впечатления именно в рабочем процессе.

Я бы не назвал частью языка средство, облегчающее взаимодействие с repl'ом. Да, оно может замечательно продемонстрировать «взрослые» подходы и приемы, применяемые в рабочем процессе. Но опять же, что там было насчет преждевременной оптимизации?

В данном конкретном случае лиспопрограммирование в емаксе + слайм - это как заходить в квартиру на пятом этаже через дверь, поднявшись на нужный этаж на лифте. Изварты с vim, kate, etc - это альпинизм по стенам и без всякого снаряжения. В принципе, если привыкли лазить по другим домам (пофайлово конпелируемое всякое), то ничего страшного, но вот сумки из продуктового уже тяжеловато поднимать. А внизу ещё диван стоит... Т.е. для альпиниста это нормально и привычно, но лиспер-слаймовод бригаду грузчиков вызовет и будет ковыряться в носу, пока они ему диван на лифте везут.

Кстати об емаксе. С чего бы он с таким аппетитом (под 100%) мог проц кушать?

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

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

>спрошу так - ты знаешь, что в CL помимо cons cells есть множество других

Вот чорт, не знал, что это тайна. Ну извини!

Признаюсь, я не вдавался в подробности фактической реазации этих плюшек (CL от прочих отличает именно обилие плюшек), но поскольку это все же лисп, то, имхо, за исключением совем уж специальных случаев, и рассматривать это все следует с позиции лиспа, т.е. «все есть список». Отсюда и cons cell как [пафос поскипан] самое основание лиспа. Для js такой основой будет блок(«{}»), который по сравнению с cons cell выглядит именно как нелепая городушка (пофиг, что фактически он список — в js он «блок», и выглядит как блок, и скрипит как блок.)

Так вот, главное, что я знаю про лисп , это то, что cons cellы в силу своей простоты позволяют реализовать абстракции любого уровня. И да, в CL много чего реализовано из коробки.

ps: и про деструктивную модификацию я тоже знаю, речь не об оптимизации, а о представлении, ок?

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

>Попробуй rlwrap sbcl

Спасибо, зопесал, попробую.

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