Я опытный программист на C ++ /. NET / Java Windows / Web и пытаюсь выучить (Common) Lisp.Я читаю Practical Common Lisp и использую SLIME.
Можно также использовать LispWorks Personal Edition для изучения Lisp.У него есть некоторые ограничения, и полный продукт является коммерческим, но его немного проще использовать.
Я получаю REPL, но не совсем понимаю, как его эффективно использовать.Когда мне нужно изменить функцию, я должен заново ввести defun и внести изменения (утомительно и подвержено ошибкам).Как я могу сделать это лучше?
У REPL есть история.С помощью клавиатурных команд вы можете вернуть предыдущий ввод и изменить его.Кроме этого просто отредактируйте файл Lisp и скомпилируйте код оттуда.В Лиспе вы можете компилировать / оценивать отдельные выражения и определения.Типичные IDE, такие как SLIME, LispWorks или Allegro CL , позволяют запускать код также из обычных текстовых окон Lisp - в дополнение к выполнению выражений в REPLA (он же Listener).
Как получить от ввода кода в REPL до фактического наличия программы?Я привык к модели C, где у вас есть файлы кода, которые вы можете просматривать, редактировать и перекомпилировать.Я знаю, что в Лиспе есть нечто подобное (через функцию загрузки), но как получить функцию, которую я только что определил, и протестировать в файл для сохранения?Я надеюсь, что есть лучший метод, чем мой текущий выбор + копировать + вставить.
Копировать и вставить в одну вещь.Но правильный способ - работать с текстовым файлом в окне редактора.Можно скомпилировать / загрузить выражения, буфер редактора или связанный файл.
Как вы отлаживаете ошибки?Есть ли какая-либо возможность войти в код, как я бы сделал с другими языками?
См. STEP, TRACE и связанные с ними.SLIME, LispWorks и Allegro CL имеют множество дополнительных функций.
Пока S-выражение допустимо, я не получаю никаких ошибок при вводе (defun ...).Только когда я пытаюсь использовать это, я обнаруживаю, что это недействительно.Есть ли способ получить ошибки раньше (т.е. скомпилировать код)?
Во многих случаях используется компилятор.Компилятор найдет диапазон ошибок и также заметит, когда что-то необычное (например, функция не существует или переменная не была определена).
- Есть ли IDE, которая была бы более знакомамне или мне проще играть с языком?
LispWorks, Allegro CL - лучшие под Windows.Есть некоторые альтернативы, такие как Corman Lisp (я не знаю, поддерживается ли он сейчас) или даже Ufasoft Lisp.
Стоит ли вместо этого переключаться на изучение Схемы?
Не совсем.