πŸ’Ύ Archived View for polyserv.xyz β€Ί posts β€Ί 2024-06-05-new-project.gmi captured on 2024-12-17 at 09:27:46. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

ΠšΠ°ΠΏΡΡƒΠ»Π° Никиты Попова

ru

en

Новый ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

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

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ 2024-06-05. ПослСдниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ 2024-11-05.

Π˜Ρ‚Π°ΠΊ, ΠΎ Π½ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.

Π—Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ **ΠΌΡ‹ΡˆΠΊΠ°**[^1]. Ибо ΠΎΠ½ малСнький!

Π― ΠΏΠΎΠ΄ΡƒΠΌΠ°Π», Ρ‡Π΅Π³ΠΎ ΠΆΠ΅ ΠΌΠ½Π΅ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ программисту? ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, своСго Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° **Scheme**. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ Π΄Π΅Π»ΠΎ Π½Π΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‡Ρƒ просто Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ прСкрасный язык программирования **Hare**[^2] ΠΆΠΈΠ²Ρ‘Ρ‚ Π±Π΅Π· возмоТности Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ прилоТСния ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ скриптовым языком. Π’Π°ΠΊ большС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚! **"Π”ΠΎΠΊΠΎΠ»Π΅!"** ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» я ΠΈ сСл Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ.

На самом Π΄Π΅Π»Π΅ я ΠΎΠΆΠΈΠ΄Π°Π», Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ½Π΅ нСпонятно. Но имСя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ΡŒ написания ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для **Emacs** ΠΈ нСбольшой ΠΎΠΏΡ‹Ρ‚ Π² самом **Hare**, я ΠΈΠΌΠ΅Π» прСдставлСниС с ΠΊΠ°ΠΊΠΎΠΉ стороны ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ. Π’Π°ΠΊΠΆΠ΅ я Π½Π°ΡˆΡ‘Π» просто ΠΏΡ€Π΅ΠΊΡ€Π°ΡΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ[^3], Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΡ‡Π΅Π½ΡŒ Π±Π°Π·ΠΎΠ²ΠΎ, Π½ΠΎ понятно ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ. Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π» лСксСр ΠΈΠ· самого **Hare**, написал нСбольшой **READ**, ΠΏΠΎΠ΄ΠΊΡ€ΡƒΡ‚ΠΈΠ» **EVAL**. И Π½Π΅ успСл я ΠΌΠΎΡ€Π³Π½ΡƒΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π°Ρ‡Π°Π» ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ тСстовый ΠΊΠΎΠ΄ вычислСния чисСл **Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ** Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€ΠΈΡ‚Π°Ρ†ΠΈΡŽ!

(define (fib n)
        (if (= n 2) 1
          (if (= n 1) 1
            (+ (fib (- n 1)) (fib (- n 2))))))

ПослС этого Π·Π°ΠΏΠΈΠ»ΠΈΠ» сам **REPL** ΠΈ Π²ΠΎΡ‚ ΠΈΠΌ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ!

$ ./mice
mice-repl v0.0.0
Ξ» => (define x 12)
12
Ξ» => (+ x 25)
37
Ξ» => (define y (+ x 25))
37
Ξ» => (exit)
Bye!

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅Ρ‰Ρ‘ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ, Π½ΠΎ я смогу с этим ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ я Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Ρƒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρƒ Π² нСдСлю. Но Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ **Scheme** Π½Π° **Hare** оказалось Ρ‚Π°ΠΊ Π»Π΅Π³ΠΊΠΎ, Ρ‡Ρ‚ΠΎ Π·Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ врСмя я смог Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ всС самыС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹. Π”ΡƒΠΌΠ°ΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слоТности Ρƒ мСня Π±ΡƒΠ΄ΡƒΡ‚ со сборщиком мусора. Π§Ρ‚ΠΎ-Ρ‚ΠΎ ΠΌΠ½Π΅ подсказываСт, Ρ‡Ρ‚ΠΎ Π΄ΠΎ мСня Π½Π° **Hare** этого Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π». ΠžΡΡ‚Π°Ρ‘Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° Π½Π° старом Π΄ΠΎΠ±Ρ€ΠΎΠΌ **C**. Π‘Π»Π°Π³ΠΎ возмоТности Ρƒ **Hare** ΠΈ **C** сопоставимыС.

НСоТиданным бонусом я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ кусочСк собираСмого ΠΌΠ½ΠΎΠΉ ΠΏΠ°Π·Π»Π° "ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ". Π’Π΅ΠΏΠ΅Ρ€ΡŒ я ΠΌΠΎΠ³Ρƒ с ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ просто понимаю ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ описанныС Π² Π½ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½ΠΎ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» Ρ‚Π°ΠΊΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, Ρ…ΠΎΡ‚ΡŒ Π½Π° ΠΎΡ‡Π΅Π½ΡŒ Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈ Π½Π΅ Π² ΠΆΠ΅Π»Π΅Π·Π΅. Но ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π΄ΠΎ стэковой машини Π½Π° **ΠŸΠ›Π˜Π‘** Π΄ΠΎΠ±Π΅Ρ€ΡƒΡΡŒ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ.

А ΠΏΠΎΠΊΠ° ΠΏΠΎΠΆΠ΅Π»Π°ΠΉΡ‚Π΅ ΠΌΠ½Π΅ ΡƒΠ΄Π°Ρ‡ΠΈ, Ρ‚.ΠΊ. Π½Π° этот ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Ρƒ мСня Π½Ρƒ ΡƒΠΆ ΠΎΡ‡Π΅Π½ΡŒ большиС ΠΏΠ»Π°Π½Ρ‹.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ слСдуСт...

[1] mice

[2] Harelang

[3] Implement Scheme

"Новый ΠΏΡ€ΠΎΠ΅ΠΊΡ‚" Ρ‡Π΅Ρ€Π΅Π· WWW

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ссылки

Codeberg

e-mail

Fediverse

GitHub

IRC

nostr

Β© 2024 POLYSERV BY MODERN HOME