LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

лисп тут совсем не уникален.

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

Точнее не так. Нет _удобной_ возможности. Просто подменять функции на ходу можно в erlang. Причём отсутствие явных циклов (только tail-recursive) позволяет менять выполняемую функцию. Закачал, применил, со следующей итерации уже новая версия. Можно в Java через classloader. Можно в том же Racket, если это функция текущего модуля.

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

Исходная версия monk, :

лисп тут совсем не уникален.

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

Точнее не так. Нет _удобной_ возможности. Просто подменять функции на ходу можно в erlang. Причём отсутствие явных циклов (только tail-recursive) позволяет менять выполняемую функцию. Закачал, применил, со следующей итерации уже новая версия. Можно в Java через classloader. Можно в том же Racket, если это функция текущего модуля.

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