Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/202: Рейтинг темы: голосов - 202, средняя оценка - 4.80
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038

Различные IDE для диалектов лиспа

20.04.2014, 21:26. Показов 42608. Ответов 125
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я работаю с лиспом (развлекаюсь, конечно, а не работаю) в vim + slimv. Буду нести эту связку в массы. Сразу оговариваюсь, что я не эксперт по slimv-у, поэтому что-то могу делать неоптимально и могу не знать многих фич. Однако и так он устанавливает достаточно удобный диалог с лиспом для того, чтобы не разменивать Редактор на всякую ерунду.

Slimv - это плагин, который имитирует функциональность Slime. В частности, он устанавливает диалог с работающим лисповым процессом. Написан на vimlang и python (та часть, которая отвечает за общение процессов через сокеты).

Да, я буду писать линуксоцентрично. Вроде бы slimv работает и на Windows, но пользователи оной ОС пусть сами разбираются, как его ставить. Также я буду писать CL-центрично, хотя slimv поддерживает и другие диалекты.

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

Начать с установки.

Требования: vim с python и python.

Установка плагина тривиальна. Если есть pathogen, просто распаковать свежий slimv в ~/.vim/bundle. Если нет pathogen-а, сначала установить его по инструкции и см. п. 1.

Ещё у меня есть файл ~/.vim/ftplugin/lisp.vim следующего содержания:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
set lw-=if
set lw+=set-macro-character
set lw+=set-dispatch-macro-character
set lw+=block
set lw+=defsetf
 
inoremap <buffer> <C-\> lambda 
nnoremap <buffer> <Space> <C-w>w
 
nmap <buffer><silent> == :call Scheme_indent_top_sexp()<cr>
 
let g:slimv_browser_cmd = "dillo"
 
" Indent a toplevel sexp.
fun! Scheme_indent_top_sexp()
    let pos = getpos('.')
    silent! exec "normal! 99[(=%"
    call setpos('.', pos)
endfun
Что вам отсюда может быть нужно? Сначала корректируется параметр lispwords - он перечисляет список слов, которые требуют "лисповый" стиль индентации. Из числа lispwords исключаем if, чтобы его индентация соответствовала требованиям http://dept-info.labri.u-borde... ation.html. Затем добавляем несколько лиспослов, которые виму почему-то неизвестны.

Затем пара мапов: в режиме вставки C-\ даёт лямбду (баловство) и более важное: в нормальном режиме пробел переключает между окнами. Удобно прыгать из файла в репл и обратно.

Дальше == перемапливается на функцию, индентирующую с-выражение верхнего уровня, содержащее курсор. Это полезнее, чем дефолт (индентовать строку). Функцию откуда-то скопипастил вместе с названием.

Ну и в качестве браузера, в котором открывается HyperSpec, я себе назначил dillo.
2
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.04.2014, 21:26
Ответы с готовыми решениями:

Возможности и ограничения диалектов Лиспа
Предлагаю обсудить возможности и ограничения диалектов Лиспа.

Существуют ли IDE для лиспа под Ubuntu?
Добрый день! Посоветуйте, пожалуйста, какую-нибудь IDE для лиспа под ubuntu, если такая имеется. Добавлено через 2 часа 13 минут Или...

Библиотека для лиспа
Здравствуйте. Если можно, подскажите ресурс с библиотекой lib-k.lsp

125
 Аватар для Dastin
23 / 23 / 3
Регистрация: 21.06.2014
Сообщений: 36
24.06.2014, 23:18
Студворк — интернет-сервис помощи студентам
Так же на андроид присутствуют gambit и специальное дополнение для SL4A под названием jscheme вроде бы. Название последнего точно не помню..
0
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
25.06.2014, 07:39
Цитата Сообщение от Memex Посмотреть сообщение
Мир не так уж и плох.
мир прекрасен, тащемто (имхо)
1
75 / 24 / 0
Регистрация: 23.06.2014
Сообщений: 33
30.06.2014, 23:45
Цитата Сообщение от ur_naz Посмотреть сообщение
а emax aka lispbox был удален мной через 10 минут после бессвязного тыкания.
А если более связно потыкать? Вот нашел наконец у себя в почте, писал когда-то кому-то типа "быстрый старт". Правда, тут не сборка lispbox - все компоненты были по отдельности поставлены. Есть немного бреда и ошибок, но править уже лень, извиняйте.

1. Запуск Емакса, переход в рабочий каталог (M-x cd полный путь к каталогу), открытие нового файла (C-x C-f ввести имя файла).


2. Запуск SLIME (M-x slime).


3. Переключаюсь на буфер с файлом (C-x b имя буфера), в данном случае имя буфера отобразится в мини-буфере и имя самого буфера набирать не нужно, можно просто нажать Enter. Набираю код первой функции и тут же компилирую ее (С-с С-с), т.е ее текст посылается в запущенный лисп и компилируется, вместо компиляции можно выбрать выполнение этого определения функции (Eval , C-M-x).

Так же полезно изучить другие комбинации для исполнения, к примеру, выделив сразу несколько функций можно и объявлений переменных можно все их сразу послать в лисп (Eval Region, C-c C-r), выполнить последнее выражение (Eval C-x C-e) удобно использовать для выполнения объявлений новых переменных, констант и т.д. (defvar, defconstant).

4. Проверяю, как работает моя функция – нажимаю C-c C-y (Call defun), фрейм делится на два окна и имя функции подставляется в REPL, жму Enter, вижу результат.


5. Переключаюсь на окно с файлом (C-x o) и продолжаю редактировать – печатаю вторую функцию. Далее, точно так же, как и первую, компилирую ее (С-с С-с), но в REPL у меня появляется предупреждение о том, что функция FROMAT не определена. Да, действительно, опечатался и набрал это вместо FORMAT.


6. Делаю исправления, повторно компилирую (C-c C-c), передаю на выполнение (С-с С-y) и убеждаюсь, что все работает нормально.


7. Еще одна функция. Все повторяется по уже знакомому сценарию – переключение на окно с файлом (С-х о), редактирование, компиляция, проверка работы.


8. Опять переключаюсь на окно с файлом, сохраняю его (С-x C-s). Выхожу из Емакса (C-x C-c), при выходе обычно задается вопрос, отвечаю yes.
1
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
01.07.2014, 00:56
Нет, ну на уровне обучения это все красиво. А вот работать на постоянной основе в emacs сможет во истину гик. Самое печальное, что это чревато синдромом снобизма. (сказал субъект, который думает что переборол этот синдром)
1
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
01.07.2014, 07:57
Цитата Сообщение от castorsky Посмотреть сообщение
А вот работать на постоянной основе в emacs сможет во истину гик.
Т.е. почти все лисперы — гики? =)
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
01.07.2014, 10:58
однозначно (с)
0
75 / 24 / 0
Регистрация: 23.06.2014
Сообщений: 33
07.07.2014, 22:29
Цитата Сообщение от castorsky Посмотреть сообщение
А вот работать на постоянной основе в emacs сможет во истину гик.
Ну, тык, я только по праздникам и во время поста
А так в основном фаровским редактором.
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
08.07.2014, 05:37
Про Emacs уже говорили? Тему не читал.

Добавлено через 14 минут
Цитата Сообщение от castorsky Посмотреть сообщение
с этим почти у всех проблемы
В Emacs есть отличный интерфейс для GDB, например.

Цитата Сообщение от Memex Посмотреть сообщение
Хотя разработку в среде mocl, судя по видеодемонстрации возможностей, лучше вести на планшетном компьютере с портативной подключаемой клавиатурой.
Не, разработку будет лучше вести на полноценном компьютере.

Цитата Сообщение от Memex Посмотреть сообщение
Греет сердце то, что на андроиде доступно множество чрезвычайно полезных программ - математическое приложение Maxima (в буквальном смысле дочка системы Macsyma), использующее Lisp в качестве ядра, а также (не по теме, список того, что мне удалось загрузить): целый IDE Squeak Smalltalk (интерфейс так и просит экрана побольше), интерпретатор Пролога Jekejeke Runtime, простой интерпретатор Scheme - Scheme Droid, приложение-справочник для инженерных расчётов Mechanical Engineering Toolbox и т.д. Бесплатно. Мир не так уж и плох.
К сожалению, всё это не нужно без как минимум «планшетного компьютера с портативной подключаемой клавиатурой», который всё равно по удобству не сравнится с десктопом или лэптопом.

Цитата Сообщение от korvin_ Посмотреть сообщение
Т.е. почти все лисперы — гики? =)
Ну, Emacs'ом не только лисперы пользуются.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
08.07.2014, 06:58
Цитата Сообщение от Nameless One Посмотреть сообщение
Ну, Emacs'ом не только лисперы пользуются.
Дело не в этом, а в том, что почти все лисперы пользуются емаксом.
0
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
26.09.2014, 09:37
From Vim to Emacs+Evil chaotic migration guide

Обсуждение на Hacker News
3
431 / 385 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
30.09.2014, 19:48
Есть еще MIT/GNU Scheme, с ним идет редактор в комплекте (Emacs). Для такого чайника (и в лиспах, и в имаксах) это удобно. Я вообще предпочитаю языки, с которыми среда в комплекте идет. Так удобнее - уже все настроено. Хотел сегодня поставить MIT/GNU Scheme, но заигрался с языком Ela (по синтаксису - вылитый Haskell, но при этом интерпретируемый и динамически типизированный), с ним тоже среда своя идет. Теперь уж на завтра оставлю MIT/GNU Scheme. Если, конечно, меня кто-нибудь не отговорит. А то вдруг у него, например, есть какие-то известные всем (кроме меня) косяки. Буду дальше выбирать. Синдром Буриданова осла?
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
30.09.2014, 23:20  [ТС]
Цитата Сообщение от Vtulhu Посмотреть сообщение
Есть еще MIT/GNU Scheme, с ним идет редактор в комплекте (Emacs). Для такого чайника (и в лиспах, и в имаксах) это удобно.
Я ничего не понял. Как это Emacs - "редактор в комплекте", если Emacs - целая вселенная сам по себе?
0
01.10.2014, 09:24

Не по теме:

[TROLLMODE]

Да, многие считают, что Emacs - это, фактически, операционная система. Для нее даже игрушки есть. У этой ОС всего-навсего один существенный недостаток: убогий текстовый редактор, поставляемый с нею в комплекте.

[/TROLLMODE]

0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
01.10.2014, 16:54  [ТС]
Цитата Сообщение от Vtulhu Посмотреть сообщение
Да, многие считают, что Emacs - это, фактически, операционная система. Для нее даже игрушки есть. У этой ОС всего-навсего один существенный недостаток: убогий текстовый редактор, поставляемый с нею в комплекте.
По-моему, это не троллинг, а общее место.

Я в первую очередь не понял, можно ли считать отношения Emacs-а с MIT Scheme более тесными, чем, например, Emacs-а с CL (поставил Slime, M-x slime и вперёд).
0
431 / 385 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
01.10.2014, 17:35
В комплекте с MIT/GNU Scheme идет Edwin - клон Emacs, написанный на MIT/GNU Scheme. Но главное, конечно - это то, что этот редактор изначально настроен на схему и даже запускает ее.

0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
01.10.2014, 17:46  [ТС]
А. То есть для CL нужно сначала в Emacs-е сделать M-x slime, а тут само запускается. Понятно.
0
92 / 59 / 8
Регистрация: 09.11.2011
Сообщений: 443
07.10.2014, 15:18
Установка редактора Sublime Text 3 для SBCL + настройка REPL (для пингвинов и новичков в лиспе)

Установка среды и редактора
  • Если нет SBCL, устанавливаем
Code
1
$  sudo aptitude install sbcl
  • установим quicklisp
Code
1
$ sbcl --load quicklisp.lisp
  • в sbcl ввести команду
    Code
    1
    
    * (quicklisp-quickstart:install)
  • Чтобы quicklisp загружался со средой вести
    Code
    1
    
    (ql:add-to-init-file)
Теперь вы можете устанавливать любые библиотеки вводя
(ql:quickload "libraryname")

Установка Package Control


Запустите редактор. Вызовите консоль View > Show Console (или нажав [ Ctrl + ` ] )
На странице https://sublime.wbond.net/installation скопируете текст из окна (выбрав версию редактора) в строку консоли. Этот код установит пакетный менеджер.


Установка REPL
  • Нажмите [Ctrl + Shift + P ]. появиться палитра команд (command palette), выберите Package Control:Add Repository. (просто напечатайте dry)
  • Снова откройте палитру и выберите пункт Package Control:Install Package (напечатайте install)
    Загрузиться репозиторий, найдите SublimeREPL и установите его.
  • Теперь можно запустить его из меню Tools > SublimeREPL > Common Lisp > SBCL


Настроим горячие клавиши

Меню Preferences > Key Bindings — User . В открывшемся окне введите и сохраните текст:
Кликните здесь для просмотра всего текста

[
{
"keys": ["super+ctrl+h"],
"command": "repl_open",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["sbcl", "-i"],
"cwd": "$file_path",
"external_id": "lisp",
"syntax": "Packages/Lisp/Lisp.tmLanguage"
}
}
]

Все REPL будет открываться сочетанием [ SUPER + Ctrl + H ]

Сборка

Откройте окно Tools > Build System > New Build System и введите текст,
Кликните здесь для просмотра всего текста
{
"shell_cmd": "/usr/local/bin/sbcl --disable-debugger --load $file",
"working_dir": "$file_path"
}

сохраните его как SBCL.sublime-build

Теперь предварительно выбрав Tools > Build System > SBCL , можно собирать ваш проект сочетанием [ Ctrl + B ]
1
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
07.10.2014, 15:38  [ТС]
Здорово!

Хотелось бы ещё несколько моментов уточнить.

Как отправить лиспу определение функции, не загружая заново файл? Как вычислить значение заданного выражения в файле? Как открыть CLHS для данного символа?
0
92 / 59 / 8
Регистрация: 09.11.2011
Сообщений: 443
07.10.2014, 15:49
Цитата Сообщение от helter Посмотреть сообщение
не загружая заново файл? Как вычислить значение заданного выражения в файле? Как открыть CLHS для данного символа?
Если честно я пока не знаю... Меня только на это все хватило, предлагаю найти ответы совместно.
Но вот есть
Code
1
(load "hello.lisp")
загрузит в REPL файл
Или так
Code
1
(load (compile-file "hello.lisp"))
быстро.
Вообще я пока просто не понимаю зачем это нужно (то что вы спрашиваете), тк пока сам не сталкивался, я полный новичек в лиспе, и только выбирал себе IDE. Хотя это не ИДЕ, а текст-редактор
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
07.10.2014, 16:32  [ТС]
Цитата Сообщение от Cheb Посмотреть сообщение
Вообще я пока просто не понимаю зачем это нужно (то что вы спрашиваете)
Это норма, к которой привыкли программисты на лиспе. Интерактивная разработка в лиспе более интерактивная, чем во многих других языках. Поэтому лисп требователен к редакторам. Можете попробовать выяснить, насколько Sublime Text соответствует требованиям, сформулированным Норвигом, и если не соответствует - жалуйтесь, пока не пофиксят, как он ЕМНИП советует.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2014, 16:32

Библиотека для доступа к win32 из лиспа
Добрый день! Такая библиотека ищется (не зависящая от реализации Common Lisp. Пока нашёл только вот это: ...

Подскажите программное обеспечение для лиспа
С лиспом вообще не знакома , но есть написанная программа ХХХ.lsp , диалог , программа типа доктор . Подскажите чем ее можно открыть...

obj\Debug\IDE.o||In function `Z11OpenProjectv':| C:\tsserver\Projects\cpp\codeblocks\MyComp\IDE\IDE\IDE.cpp|2 36|undefined reference to `GetOpenFileNam
obj\Debug\IDE.o||In function `Z11OpenProjectv':| C:\tsserver\Projects\cpp\codeblocks\MyComp\IDE\IDE\IDE.cpp|236|undefined reference to...

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

каким образом пожна подключить на мать с 2 IDE выходами и 2 SATA 3 жестких диска IDE и 2 CD-ROM IDE?
Доброго вам времени суток Можете подсказать каким образом пожна подключить на мать с 2 IDE выходами и 2 SATA 3 жестких диска IDE и 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru