ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠ΅Π»ΠΈΠ· GNU Guile 3.0.10, ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Scheme, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Guile ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΡΠ·ΡΠΊ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Guile ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ GNU.
ΠΡΠ½ΠΎΠ²Ρ Guile ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π°, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ. ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Guile Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ°Ρ Π‘ΠΈ ΠΈ Π‘ΠΈ++. ΠΡΠΎΠΌΠ΅ ΡΠ·ΡΠΊΠ° Scheme, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ R5RS, R6RS ΠΈ R7RS, Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Guile ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ECMAScript, Emacs Lisp ΠΈ Lua (Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ). Π ΡΠΎΡΡΠ°Π² ΠΏΠ°ΠΊΠ΅ΡΠ° Π²Ρ ΠΎΠ΄ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠΈΠΏΠΎΠ²ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ HTTP, ΠΏΠ°ΡΡΠΈΠ½Π³ XML ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π‘ΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π½ΠΎΠ²ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅:
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π±ΡΠΊΠ΅Π½Π΄ΠΎΠ². Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎΡΡ ΡΡΠΎΠ½ΡΡΠ½Π΄Π°, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡΠ΅Π³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° Guile Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π±ΡΠΊΠ΅Π½Π΄Π°ΠΌΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΌΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π°.
- ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π±ΡΠΊΠ΅Π½Π΄ hoot Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° WebAssembly, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. Π Π±ΡΠ΄ΡΡΠ΅ΠΌ Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ WebAssembly Π² ΡΠΈΡΠ»ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² Guile.
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ «define» Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ «when», «unless», «cond», «case», «and-let*» ΠΈ «with-fluids».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° custom ports, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π² Π΄ΠΈΠ°Π»Π΅ΠΊΡΠ΅ ΡΠ·ΡΠΊΠ° Scheme R6RS ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΆΠ°ΡΠΈΠ΅/ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²), ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ
Π² ΡΠ°ΠΊΠΈΡ
ΡΡΠ½ΠΊΡΠΈΡΡ
, ΠΊΠ°ΠΊ
read, write ΠΈ display. Π Guile ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΌΠΎΠ΄ΡΠ»Ρ «(ice-9 soft-ports)», ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ «soft port», ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΎΠ³Π° «custom ports». - ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΏΡΠΎΡΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° wisp, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ ΠΏΠΈΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
define : factorial n
if : zero? n
. 1
* n : factorial (- n 1)
display : factorial 5
newlineΠ²ΠΌΠ΅ΡΡΠΎ
(define (factorial n)
(if (zero? n)
1
(* n (factorial (- n 1)))))(display (factorial 5))
(newline) - Π ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π²ΡΠ΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΠΌΠΏΠΎΡΡΠ° Π² ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½ΠΎΠ²Π°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ «maybe-unused», ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡΠ°Ρ Π²ΡΠ²ΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡ.
- ΠΡΠ²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅ΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ΅Π·Π°Π΅ΡΡΡ ΠΏΠΎ Π³ΡΠ°Π½ΠΈΡΠ΅ 500 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π° Π½Π΅ 80 (ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ default-frame-width).
- Π ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ «copy-file» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ «#:copy-on-write», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ copy-on-write Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ Π΅Π³ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ .
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ°Ρ inline-ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡ Ρ keyword-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru