Модифицировать лисповскую функцию, не переписывая ее? - PullRequest
5 голосов
/ 27 июля 2010

Ранее я написал функцию Lisp с ошибкой.Первой задачей было выяснить, как снова просмотреть функцию.Эта проблема решена.Теперь, когда я вижу, ЧТО я сделал неправильно, я хочу изменить содержимое определенной функции, не переписывая ее целиком?

Кажется, такой же умный, как Лисп, должен быть способ сделать это, я просто не знаю, что это, потому что я довольно новичок в языке.Можно ли это сделать?

Ответы [ 3 ]

3 голосов
/ 27 июля 2010

Судя по вопросу, я думаю, что у вас странная настройка.Кажется, это указывает на то, что вы пишете свои функции непосредственно в REPL.Не делайте этого.

Обычной настройкой является наличие IDE (например, Emacs with Slime), в котором вы редактируете исходный файл, а затем «отправляете» формы верхнего уровня (например, определения функций)REPL.

2 голосов
/ 27 июля 2010

Каждый полезный REPL имеет функциональность истории. Это позволяет вам перемещаться в истории вашего ввода вперед и назад.

Когда я пишу код в REPL, простые нажатия клавиш, такие как m-p, возвращают предыдущий код. Некоторые IDE могут даже найти исходный код в прослушивателе Lisp с помощью m-. .

В большинстве REPLS вы также можете осуществлять поиск в обратном направлении.

Если вы хотите записать входные данные, используйте функцию DRIBBLE ..

Есть еще несколько опций, например, получение кода из функции - когда это поддерживается в Lisp IDE.

0 голосов
/ 27 июля 2010

Во многих Лиспах есть функция advice, которая позволяет запускать дополнительный код до, после или вокруг существующей функции. Но комментарий правильный, почему бы вам не переписать функцию, если вы все еще учитесь и пробуете что-то? Они берут с вас плату за цикл компиляции?

...