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