LINUX.ORG.RU

интерпретатор CLisp

 ,


0

3

Помогите выбрать интерпретатор Common Lisp для новичка,в качестве реализации выбрал SBCL, учу по PCL, на лиспере был, лор-вики читал. Что юзал, и чем недоволен: 1) gcl - единственная прога, которую он выполнил - была хеллоу ворлд. Потом требовал всякие (use-fast-links nil) и пр, с 10 го раза все таки загружал каким-то чудом (код не менял), но функции запускать отказывался,хотя на том же clisp`e выполнялась сразу
2)clisp, использую сейчас, но не может выполнить функцию, полностью переписанную с PCL так что вероятность ошибки стремится к 0. Имея опыт с gcl, предполагаю что виноват сам clisp.
3) ecl и sbcl, показались очень неудобными из-за ^[[C^[[D^[[1;2D^[[1;2D...
Собственно, интересуют истории успеха, или ответ на вопрос ЧЯДНТ? хотя бы относительно clisp.
PS. Пишу и буду писать в Vim.

★★★★

Последнее исправление: comp00 (всего исправлений: 1)

GNU Emacs + Slime во все поля.

Deleted
()

)clisp, использую сейчас, но не может выполнить функцию, полностью переписанную с PCL

Какую функцию? Какая ошибка?

ЧЯДНТ?
Пишу и буду писать в Vim.

power
()

ecl и sbcl, показались очень неудобными из-за ^[[C^[[D^[[1;2D^[[1;2D...

наверное линуксоиду живется несладко без знания readline

anonymous
()

Среди них нет ни одного интерпретатора, но это так, к слову. По теме: emacs + slime.

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

function:

 40 (defun grep-artist  (artist)
 41   (remove-if-not
 42   #'(lambda (cd) (equal (getf cd :artist) artist)) *db*))
clisp:
 [3]> (grep-artist "test")

*** - GETF: Истинный список не должен заканчиваться 1
Имеются следующие варианты продолжения:
ABORT          :R1      Прервать главный цикл

*db*, разумеется, не пустая

comp00 ★★★★
() автор топика

интерпретатор CLisp

Языка CLisp не существует. CLISP это и есть интерпретатор. Язык называется Common Lisp. Правильное сокращение - CL. Лучшая свободная реализация - SBCL, другая вполне приемлемая - Clozure CL. Всё остальное лучше не трогать, пока не разберёшься в языке и инструментах.

sbcl, показались очень неудобными из-за ^[[C^[[D^[[1;2D^[[1;2D

Это что такое?

Пишу и буду писать в Vim.

Тогда тебе трудно помочь. Попробуй писать на Python, Vim для этого вполне подходит.

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

Хотя clisp, может быть, интерпретирует байт-код, да и в режиме REPL некоторые грешат, за исключением sbcl.

Выбирай между sbcl, clozure cl (ccl) и clisp.

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

Языка CLisp не существует. CLISP это и есть интерпретатор. Язык называется Common Lisp. Правильное сокращение - CL. Лучшая свободная реализация - SBCL, другая вполне приемлемая - Clozure CL. Всё остальное лучше не трогать, пока не разберёшься в языке и инструментах.

Да, под CLisp я подразумевал именно Common Lisp, а не интерпретатор.
Про названия, реализации, интерпретаторы читал в вики, PCL, лиспере, т.ч. вопрос не в этом.
Если проблема лишь в vim, тогда перейду на emacs.

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

Есть еще один вариант, чтобы совсем не обременять себя привыканием к емаксу. Скачай последний LispWorks Personal Edition. Он бесплатен, но у него есть ограничения. Там свой редактор (работает в двух режимах: можно выбрать в настройках тот, который - не эмуляция Emacs) и удобная IDE. Попробуй.

Если не понравится, то есть похожая бесплатная версия у Allegro CL. Это еще одна коммерческая реализация Common Lisp. И там, и там - качество хорошее.

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

УМВР. Как воспроизвести ошибку?

P.S.Можешь запустить clisp под английской локалью? Или clisp -L english попробуй. Хз что означает «Истинный список не должен заканчиваться 1».

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

Заработало, но проблема не в локали. По непонятным мне причинам (мб можно пофиксить?) clisp сохраняет значения *db* вот в таком «неотформатированном» виде

((:|TITLE| "4" :|ARTIST| "g" :|RATING| 6. :|RIPPED| |COMMON-LISP|::|T|) (:|TITLE| "2" :|ARTIST| "test" :|RATING| 5. :|RIPPED| |COMMON-LISP|::|T|) (:|TITLE| "1" :|ARTIST| "test" :|RATING| 1. :|RIPPED| |COMMON-LISP|::|T|))
тк у меня мания ломать конфиги предполагается, что файл должен быть читабельным, я взял и отформатировал его и при загрузке, видимо, он предавался как единый текст.
Всем спасибо, помогли

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

По непонятным мне причинам (мб можно пофиксить?) clisp сохраняет значения *db* вот в таком «неотформатированном» виде

print не выполняет форматирование. Да и не должен. Если хочешь «красивостей» — используй pprint (от приставка p от «pretty») вместо print.

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

странно. Простое форматирование не могло сломать read

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

print не выполняет форматирование

беру свои слова обратно. В SBCL таки форматирует. Хотя, в принципе, для интерпретатора это не важно.

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

В gcl был форматированный вывод.

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

В gcl был форматированный вывод.

странно. Простое форматирование не могло сломать read

Форматирование мною подразумевало только начала каждого вывода с новой строки. Спасибо

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

но проблема не в локали

Это понятно. Я надеялся увидеть более информативное сообщение об ошибке на аглийском )

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

Вроде, вот эта ошибка на англ.

Break 1 [5]> (grep-artist "test")

*** - GETF: A proper list must not end with 1
The following restarts are available:
ABORT          :R1      Abort debug loop
ABORT          :R2      Abort main loop
Break 2 [6]> 
[5]+  Stopped                 clisp -L english

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

возможно, уже точно не скажу

comp00 ★★★★
() автор топика

Использую vim + slimv в связке с sbcl/clisp (в зависимости от задачи). Советую попробовать, если emacs не приглянется.

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

Вы лисп давно изучаете?

P.S.

Истинный список не должен заканчиваться 1

Означает, что любой список должен заканчиваться пустым списком, т.е. nil

Просвещаемся как минимум тут

glibych ★★
()

SBCL + Slime Самое простое и удобное решение.

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

Спасибо - не слишком силен в терминологии.

P.S. Было время для себя изучал пролог, форт и немного лисп, так как языки перекликаются между собой. Отписывал с учетом ошибки.

glibych ★★
()

PS. Пишу и буду писать в Vim.

тогда отстань от лиспа и не морочь дядям голову

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

потому что неудобно, собственно, одна из причин, по которой я окончательно свалил в емаксы - slime

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

Не очень хочется просто его учить

для имитации клавиатурных комбинаций есть evil, например

Но вообще - изучение емакса поможет осилить emacs lisp, что тоже не во вред

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

а почему в виме-то на лиспе нельзя писать?

Потому что для разработки на CL очень важен инструмент, без него теряется значительная часть преимуществ. CL так спроектирован (собственно, как и SmallTalk). Основным свободным инструментом для CL является SLIME, который разрабатывается для Emacs.

Если бы сообщество CL было больше, то наверняка и для Vim был бы хороший инструмент. Но пока сил сообщества хватает на развитие только одного качественного инструмента.

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

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

Hertz ★★★★★
()

ecl и sbcl, показались очень неудобными из-за ^[[C^[[D^[[1;2D^[[1;2D...

rlwrap

PS. Пишу и буду писать в Vim.

Есть limp который цепляет *cl через screen+rlwrap и несколько расширяет vim в части посветки и форматирования.

Есть slimv который в качестве небезглючного аналога slime-а умеет цеплятся к своей «замороженой» версии swank-а, что придоет ему некоторую «умность» в чести автодополнения, например. Имеет встроеный отключаемый paredit.

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

Они просто не могут осилить Eclipse и C++. Это как секретарши со своим Вордом.

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

*db*, разумеется, не пустая

Ты где-то неправильно перепечатал код из PCL или внёс некорректную модификацию.

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

Представляю что силами возросшего сообщества будет написано множество годных инструментов и библиотек на все случаи жизни. Жить станет лучше и веселей. Разве лисп должен превратиться в помойку?

Hertz ★★★★★
()

PS. Пишу и буду писать в Vim.

Слишком много ошибок в слове Emacs. Чтобы писать текст в емаксе надо знать четыре аккорда: C-x C-c, C-x C-f, C-x C-s, C-x C-w, для лиспа ещё C-x C-e пригодится и M-x slime. Всё. Остальное удобно, но не обязательно.

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

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

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

Рукалицо. При чём здесь компиляция? В SLIME удобный REPL, автокомплит. Можно произвольно евалить s-expr из открытых файлов и определённые символы будут доступны в REPL сразу же.

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