Капсула Никиты Попова

ru

en

Новый проект

Немного LISP'а для Hare?

Опубликовано 2024-06-05. Последние изменение 2024-11-05.

Итак, о новом проекте.

Звать его **мышка**[^1]. Ибо он маленький!

Я подумал, чего же мне не хватает как программисту? Правильно, своего диалекта **Scheme**. Конечно дело не в том, что я хочу просто написать интерпретатор. Дело в том, что новый прекрасный язык программирования **Hare**[^2] живёт без возможности расширить логику приложения каким-либо скриптовым языком. Так больше продолжаться не может! **"Доколе!"** подумал я и сел за работу.

На самом деле я ожидал, что многое будет мне непонятно. Но имея некоторый опыть написания плагинов для **Emacs** и небольшой опыт в самом **Hare**, я имел представление с какой стороны подойти. Также я нашёл просто прекрасную статью[^3], в которой очень базово, но понятно объясняется что и как нужно делать. Я немного переработал лексер из самого **Hare**, написал небольшой **READ**, подкрутил **EVAL**. И не успел я моргнуть, как мой интерпретатор начал принимать тестовый код вычисления чисел **Фибоначчи** на интерпритацию!

После этого запилил сам **REPL** и вот им уже можно пользоваться!

Конечно, ещё много работы впереди, но я смогу с этим справиться. Изначально я думал, что буду добавлять по одному примитиву в неделю. Но реализовывать **Scheme** на **Hare** оказалось так легко, что за короткое время я смог добавить почти все самые базовые примитивы. Думаю некоторые сложности у меня будут со сборщиком мусора. Что-то мне подсказывает, что до меня на **Hare** этого никто не делал. Остаётся только читать документацию и примеры кода на старом добром **C**. Благо возможности у **Hare** и **C** сопоставимые.

Неожиданным бонусом я получил очередной кусочек собираемого мной пазла "понимание технологий". Теперь я могу с уверенностью сказать, что не просто понимаю как именно машины обрабатывают команды и выполняют описанные в них операции, но и реализовал такую машину, хоть на очень базовом уровне и не в железе. Но кто знает, возможно и до стэковой машини на **ПЛИС** доберусь когда-нибудь.

А пока пожелайте мне удачи, т.к. на этот интерпретатор у меня ну уж очень большие планы.

Продолжение следует...

[1] mice

[2] Harelang

[3] Implement Scheme

"Новый проект" через WWW

Другие ссылки

GitHub

Codeberg

e-mail

nostr

© 2025 POLYSERV BY MODERN HOME

Proxied content from gemini://polyserv.xyz/posts/2024-06-05-new-project.gmi (external content)

Gemini request details:

Original URL
gemini://polyserv.xyz/posts/2024-06-05-new-project.gmi
Status code
Success
Meta
text/gemini; charset=utf-8; lang=ru; size=4654
Proxied by
kineto

Be advised that no attempt was made to verify the remote SSL certificate.