Entry tags:
Лисп поверх Питона
Питон нынче присутствует везде, даже на самых крохотных линуксных девайсах. Но если вы скучаете по функциональщине, вот вам простой Лисп поверх Питона. Называется Hy:
https://docs.hylang.org/en/stable/whyhy.html
Устанавливается командой:
https://docs.hylang.org/en/stable/whyhy.html
Устанавливается командой:
Вызывается как "hy". Такой себе вполне Лисп, с полным доступом к функциям и библиотекам Питона, и обратно. Поддерживает макросы, питоновские классы и модули. Можно делать автономные скрипты. Пример вычисления чисел Фибоначчи:pip3 install --user hy
Напечатает:(defn fib [n]
(if (< n 2)
n
(+ (fib (- n 1)) (fib (- n 2)))))
(print (fib 30))
832040
no subject
no subject
Позорище, конечно.
Я долго пялился на код, потом решил, что лениво переписывать на конечную рекурсию.
no subject
no subject
no subject
no subject
no subject
no subject
Исправил, спасибо.
no subject
no subject
Проблема с этим вариантом вычисления Фибоначчи, что даже сотый элемент не удаётся получить за разумное время.
Переписал на конечную рекурсию:
Теперь до 900-того вычисляет, а на 1000-ном падает с ошибкой "RecursionError: maximum recursion depth exceeded". Всё потому, что Питоновская виртуальная машина не поддерживает конечную рекурсию.
Переписал итеративным образом:
Теперь даже до миллионного элемента работает. Но всякий интерес пропадает: итеративный код проще будет на обыкновенном Питоне написать.
no subject