Лисп поверх Питона
2020-10-01 14:15![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Питон нынче присутствует везде, даже на самых крохотных линуксных девайсах. Но если вы скучаете по функциональщине, вот вам простой Лисп поверх Питона. Называется 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
Date: 2020-10-02 07:08 (UTC)Проблема с этим вариантом вычисления Фибоначчи, что даже сотый элемент не удаётся получить за разумное время.
Переписал на конечную рекурсию:
Теперь до 900-того вычисляет, а на 1000-ном падает с ошибкой "RecursionError: maximum recursion depth exceeded". Всё потому, что Питоновская виртуальная машина не поддерживает конечную рекурсию.
Переписал итеративным образом:
Теперь даже до миллионного элемента работает. Но всякий интерес пропадает: итеративный код проще будет на обыкновенном Питоне написать.