Scheme (ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ). ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ·ΡΠΊΠ° Scheme
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ΄Π½ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ Π²Π΅Π±Π°, Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π»Ρ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² ΡΡΠ΅ΡΡΠΈΡ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Data Science, Π° Π΅ΡΡΡ ΡΠ·ΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΡ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΏΡΠΎ Logo, ΠΏΡΠΎ Scratch, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΡΡ ΡΡΡΠΏΠ΅Π½Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡ Π²Π°Ρ Ρ Scheme.
ΠΡΠ°ΡΠΊΠ°Ρ ΡΠΏΡΠ°Π²ΠΊΠ°
Π ΠΊΠΎΠ½ΡΠ΅ 60-Ρ Π³ΠΎΠ΄ΠΎΠ² 20 Π²Π΅ΠΊΠ° ΡΡΠ΅Π½ΡΠ΅ ΠΠ°ΡΡΠ°ΡΡΡΠ΅ΡΡΠΊΠΎΠ³ΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΡΠΈΡΡΡΠ° ΠΠ°ΠΉ Π‘ΡΠΈΠ» (Guy Steele) ΠΈ ΠΠΆΠ΅ΡΠ°Π»ΡΠ΄ Π‘Π°ΡΡΠΌΠ΅Π½ (Gerald Sussman) ΠΏΡΠΈΡΡΡΠΏΠΈΠ»ΠΈ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°Π»Π΅ΠΊΡΠ° ΡΠ·ΡΠΊΠ° Lisp. ΠΠ½ΠΈ Ρ ΠΎΡΠ΅Π»ΠΈ Π»ΠΈΡΡ Π΅Π³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈ Π½Π΅ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΠΏΡΠΎΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π ΠΈΡΠΎΠ³Π΅ ΡΡΠ΅Π½ΡΠ΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΡΠ΅Π»ΡΡ ΡΠ΅ΡΠΈΡ Π·Π°ΠΌΠ΅ΡΠΎΠΊ, Π²ΡΡ ΠΎΠ΄ΠΈΠ²ΡΠΈΡ Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ 1980 Π³ΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π»ΠΈΡΡ ΠΈΠ΄Π΅ΠΈ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, Ρ Π²ΠΎΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ ΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. ΠΠΎΠ·Π΄Π½Π΅Π΅ ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Lambda Papers ΠΈ ΡΡΠ°Π»ΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΌΠ°ΡΡΡ.
ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ ΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΡΠ·ΡΠΊ Scheme, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ°ΠΌΠΈ Π΄ΠΎΠΆΠΈΠ» Π΄ΠΎ ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½Π΅Π³ΠΎ Π΄Π½Ρ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΠΈΠΊΠΈΡΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ Scheme . ΠΠ΄Π΅ΡΡ ΠΏΡΠΎΡΡΠΎ ΠΈ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°ΠΌ ΠΊΠΎΠ΄. ΠΠ°ΡΡΠ΅ΡΠΎΠΌ Scheme Ρ Π²ΠΈΠΊΠΈΡΡΠ΅Π±Π½ΠΈΠΊΠΎΠΌ Π²Ρ Π½Π΅ ΡΡΠ°Π½Π΅ΡΠ΅, Π½ΠΎ Π²ΡΡΠ΄ Π»ΠΈ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ.
ΠΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΡΠ±ΠΎΠ΅ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π² Π½ΠΈΡ . ΠΡΠΎ ΠΎΡΠΏΡΠ³ΠΈΠ²Π°Π΅Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π²ΠΈΠ΄ΠΈΡ ΠΊΠΎΠ΄ Π²ΠΏΠ΅ΡΠ²ΡΠ΅, Π½ΠΎ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ.
ΠΠΈΠΊΠ°ΠΊΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π₯Π²Π°ΡΠΈΡ ΡΠΊΠΎΠ±ΠΎΠΊ. Π’ΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉ, ΠΊΡΡΠ°ΡΠΈ, ΠΎΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΎΡ ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠΎ ΡΠΈΠΏΡ Β«Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅-ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΒ». Π ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎ ΡΠΌΠΎΡΡΠΈΡΡΡ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎ, Π½ΠΎ Π² ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ Π½Π° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ·ΡΠΊ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ.
Π ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ, Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° - ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΏΡΠΎΡΡΠ½Π½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π°:
(define (factorial n)
(if (= n 0)
1
(* n (factorial (- n 1)))))
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΡΠΎΠΌΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ ΠΈ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΊΠΎΠ±ΠΎΠΊ, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ.
ΠΠ΄Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ
Scheme ΠΈΠ·ΡΡΠ°Π΅ΡΡΡ Π² Π°ΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠΈΡ ΡΠΊΠΎΠ»Π°Ρ ΠΈ Π²ΡΠ·Π°Ρ . Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠ΄Π΅Π½ΡΡ ΠΏΠΎΠ·Π½Π°ΡΡ Π°Π·Ρ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ. ΠΠΈ Ρ ΠΊΠ°ΠΊΠΈΠΌ Π΄ΡΡΠ³ΠΈΠΌ Π±Π°Π·ΠΎΠ²ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΡΠ°ΠΊΠΎΠΉ ΡΠΎΠΊΡΡ ΠΏΡΠΎΠ΄Π΅Π»Π°ΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ.
Π Π²ΠΎΡ Π² ΠΆΠΈΠ·Π½ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠ΅Π±Ρ Scheme Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΡΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ΄Π΅Π½ΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΊΡΡΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡΠΎΠ±Π½ΡΠ΅ ΡΠ΅Π»ΠΈΠ·Ρ. ΠΡΠΈΡΠΈΠ½ Π½Π΅ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ:
- Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±ΡΡΠΌ ΠΊΠΎΠ΄Π°;
- ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ;
- ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ Common Lisp, Haskell, Clojure ΠΈ ΠΏΡ.
Π ΠΎΠ±ΡΠ΅ΠΌ, Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΄Π΅Π½ΡΠ³ΠΈ ΡΠ·ΡΠΊΠΎΠΌ Scheme Π²Π΅ΡΡΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ.
ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΠΆΠ΅Π»Π°ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°Π½ΠΈΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π±ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ: Racket ΠΈ Bigloo . ΠΠ½ΠΈ ΡΠ°ΡΡΠΈΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Scheme, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΊΡΡΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»: Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΠ°Π±ΠΎΡΠ° Ρ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ, ΠΏΡΡΠΌΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ.
ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Scheme Π½Π°ΡΡΠ» ΡΠ΅Π±Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΎΠ½ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΠΏ-50 ΡΠ΅ΠΉΡΠΈΠ½Π³Π° TIOBE . ΠΠΎ Π΅ΡΡΡ Π½Π΅Π³Π°ΡΠΈΠ²Π½Π°Ρ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ - ΡΠ·ΡΠΊ Π΅ΠΆΠ΅Π³ΠΎΠ΄Π½ΠΎ ΡΠ΅ΡΡΠ΅Ρ 0,05% ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ. ΠΡΠ·Π²Π°Π½ΠΎ ΡΡΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠ², ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΡ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΠΌΠ΅ΡΡΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΆΠΈΠ·Π½ΠΈ, ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΎΡΡΡΡ .
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Π΅Π»ΠΈΠΊΠ° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ΅Π· 5-10 Π»Π΅Ρ ΡΠ·ΡΠΊ ΠΏΡΠΎΠΏΠ°Π΄ΡΡ Ρ ΡΠ°Π΄Π°ΡΠΎΠ², Π° Π΅Π³ΠΎ ΠΌΠ΅ΡΡΠΎ Π·Π°ΠΉΠΌΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ Scratch. ΠΠΎ ΠΏΠΎΠΊΠ° ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΄Π΅Π»ΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΠΆΠΈΠ·Π½ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Ρ Ρ Scheme. Π‘Π²ΠΎΠ΅ΠΉ 47-Π»Π΅ΡΠ½Π΅ΠΉ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ ΠΎΠ½ ΡΡΠΎ Π·Π°ΡΠ»ΡΠΆΠΈΠ».
Π―Π·ΡΠΊ Scheme ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Emacs. ΠΡΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° (scheme-mode , cmuscheme , quack ), ΡΠ°ΠΊ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (xscheme , gds , bee-mode , gambit ). ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π²ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ.
ΠΠ°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ ΡΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΡ Π²Π°ΡΠΈΡΡ Π²ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Scheme, ΠΈ ΠΏΠΎΠ²Π΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ½Π°ΡΠ°Π»Π° Π²Π΅Π΄Π΅ΡΡΡ ΠΏΡΠΎ ΠΎΠ±ΡΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π²Π΅ΡΠΈ, Π° ΡΠΆ Π·Π°ΡΠ΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ ΡΠ·ΡΠΊΠ°.
Scheme-mode
Scheme-mode ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ Π² ΠΏΠΎΡΡΠ°Π²ΠΊΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² Emacs ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ lisp-mode Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Scheme. ΠΠ°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ:
- ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°
- ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΎΡΡΡΡΠΏΠΎΠ²
- ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΡ ΠΏΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ
ΠΠ° Π±Π°Π·Π΅ scheme-mode ΡΠΎΠ·Π΄Π°Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² β , ΠΈ Π΄ΡΡΠ³ΠΈΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈΡΡΡΡ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΡΡΠΌΠΎ ΠΈΠ· Π±ΡΡΠ΅ΡΠ° Emacs, ΠΈ Ρ.ΠΏ. Π²Π΅ΡΠ΅ΠΉ.
ΠΠ°Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ Π½Π° Scheme β .scm , .ss ΠΈ Ρ.ΠΏ. Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΠ» ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ (Π·Π°ΠΌΠ΅Π½ΠΈΠ².scm Π½Π° Π½ΡΠΆΠ½ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅):
(add-to-list "auto-mode-alist "("\\.scm$" . scheme-mode))
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄ΡΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ scheme-mode-hook , Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½Π° ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ Π±ΡΡΠ΅ΡΠ΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ Π³ΡΡΠΏΠΏΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ scheme .
Cmuscheme
ΠΠ°ΠΊΠ΅Ρ cmuscheme Π±ΡΠ» Π½Π°ΠΏΠΈΡΠ°Π½ Olin Shivers ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄, Π½ΠΎ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎ Scheme. ΠΠ°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΠ·ΡΠΊΠ° Scheme. ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π·Π° ΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΠ°ΠΊΠ΅ΡΠ° comint , Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π² ΠΏΠΎΡΡΠ°Π²ΠΊΡ Emacs.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠ°
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ° β ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π² ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΠ» ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄
(autoload "run-scheme "cmuscheme" "Run an inferior Scheme" t) (setq scheme-program-name "mzscheme" )
ΠΈ ΠΏΠ°ΠΊΠ΅Ρ Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ΅Π½ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ run-scheme . ΠΡΠΎΡΠ°Ρ ΡΡΡΠΎΠΊΠ° Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Scheme, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° ΡΠ²ΠΎΠΉ Π»ΡΠ±ΠΈΠΌΡΠΉ Π΄ΠΈΠ°Π»Π΅ΠΊΡ. ΠΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ΡΠ΅Π· Π³ΡΡΠΏΠΏΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ cmuscheme .
Π Π±ΡΡΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ β inferior-scheme-mode , ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Ρ ΡΠΊ inferior-scheme-mode-hook . ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΉΠ» ~/.emacs_SCHEMENAME ΠΈΠ»ΠΈ ~/.emacs.d/init_SCHEMENAME.scm (Π³Π΄Π΅ SCHEMENAME β Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°), ΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°.
Π Π°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ run-scheme , ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΠ·ΡΠΊΠ° Scheme ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π΅ ΠΏΠΎΠΊΠΈΠ΄Π°Ρ Emacs.
ΠΡΠΈ ΡΡΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠ°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° (Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ Π±Π»ΠΎΠΊ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅) Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ β ΡΡΠ½ΠΊΡΠΈΡ scheme-send-definition (ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ C-c C-e ΠΈΠ»ΠΈ C-M-x) ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅; ΡΡΠ½ΠΊΡΠΈΡ scheme-send-region (C-c C-r) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΊΡΡΠΎΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°; ΡΡΠ½ΠΊΡΠΈΡ scheme-send-last-sexp (C-x C-e) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΡΡΡΠΎΡΠΎΠΌ; Π° ΡΡΠ½ΠΊΡΠΈΡ scheme-load-file (C-c C-l) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΠ°ΠΉΠ» ΡΠ΅Π»ΠΈΠΊΠΎΠΌ (ΠΎΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π±ΡΡΠ΅ΡΠ°).
ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Scheme Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ Π±ΡΡΠ΅ΡΠ΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ *scheme* , ΠΊΡΠ΄Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΡΡΠΎΡ Π±ΡΡΠ΅Ρ ΠΈΠ· Π±ΡΡΠ΅ΡΠ° Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ switch-to-scheme (C-c C-z). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΡΠΎ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² Π±ΡΡΠ΅Ρ *scheme* β scheme-send-definition-and-go (C-c M-e) Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ scheme-send-region-and-go (C-c M-r) Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ scheme-expand-current-form (C-c C-x), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°ΡΠΊΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π½Π° Scheme. Π Π°ΡΠΊΡΡΡΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² Π±ΡΡΠ΅Ρ *scheme* . Π ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ Scheme, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ scheme-compile-file (C-c C-k) ΠΈ scheme-compile-definition (C-c M-c), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ.
ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ Π²ΡΡΠ΅, Π² Π±ΡΡΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ β inferior-scheme-mode Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΅ΠΆΠΈΠΌΠ° comint , Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ cmuscheme β scheme-compile-file (C-c C-k), scheme-load-file (C-c C-l), scheme-send-last-sexp (C-x C-e) ΠΈ scheme-send-definition (C-M-x).
Quack
ΠΠ°ΠΊΠ΅Ρ Quack ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° cmuscheme ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ (ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Ρ PLT Scheme):
- ΠΌΠ΅Π½Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ·ΡΠΊΡ, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ SRFI, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΡΡΡΠΎΡΠ°;
- Π½ΠΎΠ²ΡΠ΅ Π½Π°Π±ΠΎΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΈ Π΄Π»Ρ font-lock β Π΄Π»Ρ PLT Scheme ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ, Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ;
- Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π³ΡΠ΅ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° lambda Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ lambda-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½ΠΈΠΆΠ΅);
- Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠΈΡ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΡ ΡΠΊΠΎΠ±ΠΎΠΊ;
- ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ» ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΡΡΡΡΠΏΠΎΠ², Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Scheme;
- ΡΠ°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ run-scheme , ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π½Π°Π΅Ρ ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Scheme, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°;
- ΡΠ°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ switch-to-scheme ;
- Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ.plt ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ Π±ΡΡΠ΅ΡΠ° Dired Π΄Π»Ρ Π½ΡΠΆΠ½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
ΠΠ°ΠΊΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ Neil Van Dyke, ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Ρ ΡΠ°ΠΉΡΠ° Π°Π²ΡΠΎΡΠ° . ΠΠ°ΠΊΠ΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π³Π΄Π΅ Emacs ΡΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ Π΅Π³ΠΎ, ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
(require "quack )
ΠΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π΄Π°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π³ΡΡΠΏΠΏΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ quack , ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅Π½Ρ Quack . ΠΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ Π°Π΄ΡΠ΅ΡΠ° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ² ΠΈ SRFI, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ ΠΈ Ρ.ΠΏ.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ PLT Scheme ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΊΠ°ΡΠ°ΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Ρ ΡΠ°ΠΉΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ doc . ΠΠ°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ PLT Scheme ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ quack-pltcollect-dirs , Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ Π²ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Ρ ΡΠ°Π±ΠΎΡΠΈΠΌΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ, Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΡΠ΅Π΄Ρ PLTHOME ΠΈ/ΠΈΠ»ΠΈ PLTCOLLECTS .
Π’Π°ΠΊΠΆΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ wget , ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ SRFI.
Π Π°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ
ΠΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ cmuscheme ΠΈ scheme-mode ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ (ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ ΠΈ/ΠΈΠ»ΠΈ Π·Π°ΠΏΡΡΠΊ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ), Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅Π½Ρ Quack .
ΠΡΠΎΡΠΌΠΎΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. Π€ΡΠ½ΠΊΡΠΈΡ quack-view-manual (C-c C-q m) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ·ΡΠΊΡ Scheme, ΡΠ°ΠΊ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌ. ΠΠ»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° SRFI ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° β quack-view-srfi (C-c C-q s), ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π½ΠΎΠΌΠ΅Ρ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΈ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. Π Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ PLT Scheme Π΅ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° quack-view-keyword-docs (C-c C-q k), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° (ΡΠ°Π±ΠΎΡΠ° ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ PLT Scheme ).
ΠΠ°ΠΊ ΡΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ Π²ΡΡΠ΅, ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΡΠ½ΠΊΡΠΈΡ run-scheme (C-c C-q r), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ·ΡΠΊΠ° Scheme, Π²ΡΠ±ΠΈΡΠ°Ρ ΠΈΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ (Π²ΠΊΠ»ΡΡΠ°Ρ Π·Π°ΠΏΡΡΠΊ Ρ Π½ΡΠΆΠ½ΡΠΌΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ), Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΠ±ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ PLT Scheme ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ quack-find-file (C-c C-q f) ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊΡΡΡΠΎΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΊΠΎΠ΄Π΅ (require (lib "list.ss")) , ΡΠΎ Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ» list.ss ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ mzlib . ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ quack-dired-pltcollect , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΊΡΡΡΡ Π±ΡΡΠ΅Ρ Dired Π΄Π»Ρ Π½ΡΠΆΠ½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ PLT Scheme (ΠΏΡΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ).
ΠΠ°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π΄Π΅Π»Π°Ρ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π€ΡΠ½ΠΊΡΠΈΡ quack-tidy-buffer (C-c C-q t) Π·Π°Π½ΠΎΠ²ΠΎ ΡΠ°ΡΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΡΡΡΠΏΡ Π² ΠΊΠΎΠ΄Π΅, Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π½Π°ΠΊΠΈ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠ±Π΅Π»Ρ, ΡΠ΄Π°Π»ΡΠ΅Ρ Π»ΠΈΡΠ½ΠΈΠ΅ ΠΏΡΡΡΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΡΠ΄Π°Π»ΡΠ΅Ρ Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΡΡΡΠΎΠΊΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π½Π°ΠΊ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Π°, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅Ρ. Π€ΡΠ½ΠΊΡΠΈΡ quack-toggle-lambda (C-c C-q l) ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ (define (func args) ...) Π½Π° (define func (lambda (args) ..)) , ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π·Π½Π°ΠΊ Π»ΡΠΌΠ±Π΄Π° Π² ΠΊΠΎΠ΄Π΅ (ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡ ΡΠ°ΠΊ:
ΠΠ°ΠΊΠ΅Ρ GCA
GCA β ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Scheme. ΠΠ½ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Gauche Scheme , Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π΄ΠΈΠ°Π»Π΅ΠΊΡΠ°ΠΌΠΈ. ΠΠ°ΠΊ ΠΈ quack , ΠΎΠ½ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° cmuscheme .
ΠΠ°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
- Π²ΡΡΠ°Π²ΠΊΡ ΠΊΡΡΠΊΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ²
- ΠΏΠΎΠΊΠ°Π· ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ
- Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½
ΠΠ°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² β Π²ΠΌΠ΅ΡΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄ ΠΈ Π²ΡΠ²ΠΎΠ΄, Π΄Π°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠ°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°Π΄Π°Ρ, Π½ΠΎ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Scheme (ΡΠ΅ΡΠ²Π΅ΡΠ° gds ), ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
ΠΠ°ΠΊΠ΅Ρ gds ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Guile, ΡΠ°ΠΊ ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ Emacs Lisp Π² ΠΏΡΡΠΈ ΠΏΠΎΠΈΡΠΊΠ° Emacs, ΠΈ Π²ΠΏΠΈΡΠ°ΡΡ Π² ΡΠ°ΠΉΠ» ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΡΠΊΡ:
(require "gds )
ΠΠ°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ Scheme. Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π° Scheme Π² ΠΏΡΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° Guile. ΠΡΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π΅Π³ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ gds-scheme-directory , ΠΈΠ½Π°ΡΠ΅, ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ.
ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π΄Π°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π³ΡΡΠΏΠΏΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ gds .
Π Π°Π±ΠΎΡΠ° Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ
ΠΠ°ΠΊΠ΅Ρ gds Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅ ΠΆΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ, ΡΡΠΎ ΠΈ cmuscheme . ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ gds-eval-expression (C-c C-e), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π² ΠΌΠΈΠ½ΠΈ-Π±ΡΡΠ΅ΡΠ΅.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠΈΡΡΠ½ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΉ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ gds ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°Ρ ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΠΈΡΠΊ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ.
ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ gds-complete-symbol (ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡ M-TAB), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ°ΡΠ°Π΅ΡΡΡ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΡΡΠΈ ΠΈΠΌΠ΅Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠ΅ΠΌ Π±ΡΠΊΠ²Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΡΡΡΠΎΡΠΎΠΌ. ΠΡΠ»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠΌΡ, ΡΠΎ ΠΎΠ½ΠΎ Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π·Ρ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ Π½ΡΠΆΠ½ΠΎΠ΅ ΠΈΠΌΡ.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²ΠΊΠΈ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ gds-help-symbol (C-h g), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ΄Π°Π΅Ρ ΡΠ΅ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΡΡΠΎ ΠΈ Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (help SYMBOL) Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ Guile. ΠΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· ΠΌΠΈΠ½ΠΈ-Π±ΡΡΠ΅Ρ, Π½ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠΌΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΊΡΡΡΠΎΡ. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ gds-apropos (C-h G), ΠΊΠΎΡΠΎΡΠ°Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (apropos REGEXP) Π² Guile, ΠΈ ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΡΠΈ ΠΈΠΌΠ΅Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ»Π°Π΄ΠΊΠ°
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ gds Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ gds . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ:
(use-modules (ice-9 gds-client debugging traps)) (named-module-use! "(guile-user) "(ice-9 session)) (gds-accept-input #f)
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ gds . ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ proc_name , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ, Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΡΠΉ Π² Π±ΡΡΠ΅ΡΠ΅ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
(install-trap (make
ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π² ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π² Π±ΡΡΠ΅ΡΠ΅ gds ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Calling procedure: => s s --:** PID XXXXX (Guile-Debug)--All--------
Π² ΡΡΠΎΠΌ Π±ΡΡΠ΅ΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎ ΡΡΠ΅ΠΊΡ, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π Π°Π±ΠΎΡΠ° Π² Π±ΡΡΠ΅ΡΠ΅ ΡΡΠ΅ΠΊΠ° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π·Π° ΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΊΠ»Π°Π²ΠΈΡΠ°ΠΌ.
ΠΠ»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠ΅ΠΊΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ: u , C-p ΠΈ ΡΡΡΠ΅Π»ΠΊΠ° Π²Π²Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²Π²Π΅ΡΡ ΠΏΠΎ ΡΡΠ΅ΠΊΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΈ Π²ΡΠ±ΠΎΡΠ° ΡΡΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ° (ΡΡΠ½ΠΊΡΠΈΡ gds-up), d , C-n ΠΈ ΡΡΡΠ΅Π»ΠΊΠ° Π²Π½ΠΈΠ· β Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²Π½ΠΈΠ· (gds-down), Π° ΠΊΠ»Π°Π²ΠΈΡΠ° RET ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΡΠ΅ΠΉΠΌΠ° Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΊΡΡΡΠΎΡ.
ΠΡΠ±ΠΎΡ ΡΡΠ΅ΠΉΠΌΠ° ΡΡΠ΅ΠΊΠ° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΠΊΠ°Π·Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌΡ ΡΡΠ΅ΠΉΠΌΡ, ΠΏΡΠΈ ΡΠ²ΠΎΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ.
Π Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌ Π² Π±ΡΡΠ΅ΡΠ΅ ΡΡΠ΅ΠΊΠ° ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
gds-evaluate (ΠΊΠ»Π°Π²ΠΈΡΠ° e) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌΡ ΡΡΠ΅ΠΉΠΌΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΡΡ ΠΎ-ΠΎΠ±Π»Π°ΡΡΠΈ; gds-frame-info (i) ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ ΡΡΠ΅ΠΉΠΌΠ΅ β ΡΡΡΠΎΠΊΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΈΠΏ ΡΡΠ΅ΠΉΠΌΠ° ΠΈ Ρ.ΠΏ.; gds-frame-args (A) ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ΅ΠΉΠΌΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ; gds-proc-source (S) ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠ·Π²Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π° Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΎΠ·Π΄Π°Π½Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΌ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π² ΡΡΠ΅ΠΊΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ΠΠ»Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠ΅ΡΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, gds ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
gds-go (g , c ΠΈΠ»ΠΈ q) ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ; gds-step-file (SPC) Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π³ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΡΠ½ΠΎΡΡΡΠΈΡ ΡΡ ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ, ΡΡΠΎ ΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΡΡΠ΅ΠΉΠΌ ΡΡΠ΅ΠΊΠ°. Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, Π½ΠΎ Π±Π΅Π· Π²Ρ ΠΎΠ΄Π° Π² Π½ΠΈΡ ; gds-step-into (i) Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³. ΠΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ; gds-step-over (o) Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ° ΡΡΠ΅ΠΊΠ°.ΠΠΎΠ»ΡΠ·ΡΡΡΡ Π²ΡΠ΅ΠΌΠΈ ΡΡΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
Scheme48
scheme48 β Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° cmuscheme , Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Scheme48. ΠΠ°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ font-lock Π΄Π»Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π»Ρ Scheme48, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊΠ»Π°Π²ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π° β ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ gambit.el Π² ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ Π΅Π³ΠΎ Π½Π°ΠΉΠ΄Π΅Ρ Emacs, ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΡΠ°ΠΉΠ» ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ:
(autoload "gambit-inferior-mode "gambit" "Hook Gambit mode into cmuscheme." ) (autoload "gambit-mode "gambit" "Hook Gambit mode into scheme." ) (add-hook "inferior-scheme-mode-hook (function gambit-inferior-mode)) (add-hook "scheme-mode-hook (function gambit-mode)) (setq scheme-program-name "gsi -:d-" )
ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Gambit Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ run-scheme , ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π² cmuscheme , Π½ΠΎ gambit Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ Π½Π΅ΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄Π°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅. ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° β C-x C-e , C-c C-l , C-c C-k ΠΈ Ρ.Π΄.
Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ cmuscheme , ΠΏΠ°ΠΊΠ΅Ρ gambit ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
gambit-continue (F8 ΠΈΠ»ΠΈ C-c c) ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅,c ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°; gambit-crawl-backtrace-newer (F9 ΠΈΠ»ΠΈ C-c ]) ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ ΡΡΠ΅ΠΉΠΌΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ΅. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅,- ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°; gambit-crawl-backtrace-older (F10 ΠΈΠ»ΠΈ C-c [) ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΡΠ΅ΠΉΠΌΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ΅. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅,+ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°; gambit-step-continuation (F11 ΠΈΠ»ΠΈ C-c s) Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π³ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°Ρ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅,s ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°; gambit-leap-continuation (F12 ΠΈΠ»ΠΈ C-c l) Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π³ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π½Π΅ Π·Π°Ρ ΠΎΠ΄Ρ Π² Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅,l ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°; gambit-kill-last-popup (C-c _) ΡΠ΄Π°Π»ΠΈΡΡ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΎ Π΄Π»Ρ ΠΏΠΎΠΊΠ°Π·Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ Π΄Π»Ρ ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄: M-c , M-[ , M-] , M-s , M-l ΠΈ M-_ , Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΠΌ, ΠΏΡΠΈΠ½ΡΡΡΠΌ Π΄Π»Ρ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΉ ΠΊΠ»Π°Π²ΠΈΡ Π² Emacs. Π§ΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Π΅ Π² ΡΠ°ΠΉΠ» ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ):
(setq gambit-repl-command-prefix "\e" )
Bee-mode (bmacs)
bmacs β ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΡΠ΅Π΄Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Bigloo Scheme . ΠΠ°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
- ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΊΠΎΠ΄Π°;
- ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅;
- Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Makefile;
- Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ ΠΊΠΎΠ΄Ρ;
- ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ;
- ΠΏΡΠΎΡΠΌΠΎΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ;
- ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°;
- ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ²;
- Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (literate programming).
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΡ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Bigloo. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° , Π»ΠΈΠ±ΠΎ Π² ΡΠΎΡΡΠ°Π²Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
ΠΠ°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠΎΡΡΠ°Π²Π΅ Bigloo Scheme ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ bmacs Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°. ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π°Π΄ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΡΡΠΎΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΈ ΡΠ°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Make
make install EMACSDIR
=
ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠΎ ΠΌΠ΅ΡΡΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π² Π²Π°Ρ ΡΠ°ΠΉΠ» ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ :
(autoload "bdb "bdb" "bdb mode" t) (autoload "bee-mode "bee-mode" "bee mode" t) (setq auto-mode-alist (append "(("\\.scm$" . bee-mode) ("\\.sch$" . bee-mode) ("\\.scme$" . bee-mode) ("\\.bgl$" . bee-mode) ("\\.bee$" . bee-mode)) auto-mode-alist))
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π³ΡΡΠΏΠΏΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ bee , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π΄Π»Ρ bee-mode , ΠΈ Π³ΡΡΠΏΠΏ dbg & bug , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°.
Π Π°Π±ΠΎΡΠ° Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ
ΠΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ bee-mode ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΡΡΠ»Π±Π°ΡΠ°, ΠΈΠ»ΠΈ Π²ΡΠ±ΠΈΡΠ°Ρ Π½ΡΠΆΠ½ΡΠ΅ ΠΏΡΠ½ΠΊΡΡ ΠΈΠ· ΠΌΠ΅Π½Ρ Bee , ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ°.
ΠΠ»Ρ ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΡΡΡΡΠΏΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠΈΠ½ΡΡΡΠΌΠΈ Π΄Π»Ρ Bigloo ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΏΠ°ΠΊΠ΅Ρ bee-mode ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ: bee-indent-sexp (C-M-q) ΡΠ°ΡΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΡΡΡΠΏΡ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, bee-indent-define (C-c TAB C-d) Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, bee-indent-last-sexp (C-c TAB C-l) ΡΠ°ΡΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΡΡΡΠΏΡ Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΡΡΡΠΎΡΠΎΠΌ ΠΈ Ρ.Π΄.
ΠΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . Π§ΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ bee-tags-find (C-x 5 .) ΠΈΠ»ΠΈ bee-tags-find-variable (C-c C-d f). Π Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ bee-find-module (C-c C-d m). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, bee-mode ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄Π²Π° ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ β M-. & M-, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ bee-tag-find ΠΈ bee-tags-find-next , ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ, bee-mode ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ β ΡΡΠ½ΠΊΡΠΈΡ bee-import-binding (C-c RET i), Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΡ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ β bee-export-function (C-c RET f) ΠΈ bee-export-variable (C-c RET v). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ C β bee-import-c-file (C-c RET c), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ½Π° ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Makefile , Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ°ΠΊΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (literate programming). Π Π΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠΉ, Π½ΠΎ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ°Π²Π»ΡΡΡ Π² ΠΊΠΎΠ΄ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π·Π° ΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² @path , @node & @deffn Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° @path & @node ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ°ΠΉΠ» ΠΈ ΡΠ°Π·Π΄Π΅Π» Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΡ Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ. Π ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ @deffn ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΠ°Π·Π΄Π΅Π»Π°ΠΌ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ»ΡΡΡΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠ΄Π°
Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ, bee-mode ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠ΄ Scheme Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· Π±ΡΡΠ΅ΡΠ° Emacs. ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ ude-repl-other-frame (C-c C-r C-r), Π²ΡΠ±ΡΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΈΠΊΠΎΠ½ΠΊΡ ΡΡΠ»Π±Π°ΡΠ° (Repl ), ΠΈΠ»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ.
Π ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
- ude-repl-send-buffer (C-c C-r b) ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²Π΅ΡΡ Π±ΡΡΠ΅Ρ;
- ude-repl-send-region (C-c C-r r), ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°;
- bee-repl-send-define (C-c C-r d) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ (define);
- bee-repl-send-last-sexp (C-c C-r l) Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΡΡΡΠΎΡΠΎΠΌ;
- bee-repl-send-toplevel-sexp (C-c C-r t) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΠ΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡ ΡΠ°ΡΠΊΡΡΡΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, bee-mode ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ (ΠΏΡΠΈ ΡΡΠΎΠΌ, Π²Π΅ΡΡ Π±ΡΡΠ΅Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ²):
- bee-expand-buffer (C-c C-e C-e) ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π±ΡΡΠ΅ΡΠ΅;
- bee-expand-region (C-c C-e C-r) ΡΠ°ΡΠΊΡΡΠ²Π°Π΅Ρ ΠΌΠ°ΠΊΡΠΎΡΡ Π² Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅;
- bee-expand-define (C-c C-e C-d) ΡΠ°ΡΠΊΡΡΠ²Π°Π΅Ρ ΠΌΠ°ΠΊΡΠΎΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ (define)
- bee-expand-last-sexp (C-c C-e C-l) ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΡΡΡΠΎΡΠΎΠΌ;
- bee-expand-toplevel-sexp (C-c C-e C-t) ΡΠ°ΡΠΊΡΡΠ²Π°Π΅Ρ ΠΌΠ°ΠΊΡΠΎΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ.
ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Makefile , ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ»Π°Π³ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° β bee-mode ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² Makefile , .afile ΠΈΠ»ΠΈ.etags , ΠΈΠ»ΠΈ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ude-user-set-root-directory (C-c C-p C-r) ΠΈΠ»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΡΠ»Π±Π°ΡΠ°.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π·Π°Π΄Π°Π½, Makefile ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ude-generate-makefile (C-c C-c a ΠΈΠ»ΠΈ C-c C-c C-l), ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΠΈΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠΌΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π΄Π°Π½Π½ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄. Π ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Makefile ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ ΡΡΠΈ ΠΆΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π΅Π³ΠΎ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ.afile ΠΈ.etags . ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΈΠΌΠ΅Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Makefile β ude-edit-makefile (C-c C-c e), ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Makefile β ude-update-makefile (C-c C-c u), ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΈ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ β ude-makefile-debug-mode (C-c C-c C-d) & ude-makefile-final-mode (C-c C-c C-f) ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
ΠΠΎΠ³Π΄Π° Makefile ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ude-mode-compile-from-menu (C-c C-c C-c) . ΠΡΠ΅ΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ kill-compilation (C-c C-c k).
Π ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ude-execute (C-c C-c C-r).
ΠΡΠ»Π°Π΄ΠΊΠ° ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ Bigloo ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΈ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. bee-mode ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΡΡΠΈΠΌ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΎΠΌ Π² Emacs. ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° Π½Π°Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ bee-debug (C-c C-b C-b) ΠΈΠ»ΠΈ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΈΠΊΠΎΠ½ΠΊΡ ΡΡΠ»Π±Π°ΡΠ°, ΠΈΠ»ΠΈ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ. ΠΠΎ Π·Π°ΠΏΡΡΠΊ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π½Π΅ΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ bee-toggle-connect-buffer (C-c C-b c) ΡΡΠΎΠ±Ρ ΡΠ²ΡΠ·Π°ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ Π±ΡΡΠ΅Ρ Ρ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π° ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΎΡΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡ Π² Π±ΡΡΠ΅ΡΠ΅ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ Makefile . Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅Π³ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ bee-profiler-start (C-c C-p c). Π ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ bee-profiler-inspect (C-c C-p i), ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π·Π°ΠΏΡΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΊ Π·Π°ΠΏΡΡΠΊΡ ΡΡΠΈΠ»ΠΈΡΡ bglprof , ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ±Π΅ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ, ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΡ Π² ΡΠ΄ΠΎΠ±Π½ΠΎΠΌ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π²ΠΈΠ΄Π΅.
ΠΡΠΎΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ°ΠΊΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΏΡΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΈ bee-doc-visit (C-c C-d i) ΠΈΠ»ΠΈ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΈΠΊΠΎΠ½ΠΊΡ Info Π² ΡΡΠ»Π±Π°ΡΠ΅. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΏΠΎ ΡΠ°Π·Π½ΠΎΠΌΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΡΡΡΠΎΡΠ° β Π΅ΡΠ»ΠΈ ΠΊΡΡΡΠΎΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ΅, ΡΠΎ Π²ΡΠ΄Π°Π΅ΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°, Π΅ΡΠ»ΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ ΡΠ΅Π³ΠΈΠΎΠ½ ΠΊΠΎΠ΄Π°, ΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΄Π°Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΠΎΡΠ΅Π½ΠΎ ΠΈΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΡΠ°Π·Π΄Π΅Π».
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±Π΅ΡΠ΅ΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Info, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Bigloo. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΠΎΠΈΡΠΊ.
ΠΠ°ΠΊΠ΅Ρ bmacs ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΠΎ Π² ΡΠ²ΡΠ·ΠΈ Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π΄Π»Ρ Π½ΠΈΡ , ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅ ΠΎΡΠΎΠ±ΠΎ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ C, ΠΈ Ρ.ΠΏ., Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π»Π΅ΠΆΠΈΡ Π·Π° Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Scheme Π² SLIME
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ SLIME ΡΠΎ Scheme, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π±Π°Π·ΠΎΠ²ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠΌ ΡΡΠΎΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ . Π ΠΎΠ±ΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
(add-hook "slime-load-hook (lambda () (require "slime-scheme )))
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Ρ ΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ SLIME , Π½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΠΌΡΡ Π΄ΠΈΠ°Π»Π΅ΠΊΡΠΎΠ² Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ ΡΠ°ΠΉΠ»Π΅ β swank-kawa.scm ΠΈΠ»ΠΈ swank-mit-scheme.scm .
Π Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅, ΠΊΠ°ΡΠ°ΡΡΠ΅Π΅ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎ SLIME , ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ .
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Scheme. ΠΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ , Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΠΏΠΎΡΡΠ°Π²ΠΊΠ΅ bmacs ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ cee , ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ C, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Bigloo, bug-mode, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° Bigloo, ΠΈ ude (Unix Development Environment), ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ Ρ Bigloo.
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Makefile Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π·Π°ΠΏΡΡΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
Π’Π°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ swank -ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ Scheme, Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ contrib Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° SLIME, ΡΠ°ΠΊ ΡΡΠΎ Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΏΡΡΠΈ ΠΏΠΎΠΈΡΠΊΠ°.
ΠΠ΅Π½ ΠΠΈΠΊΠΈ (ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΠ»Π΅ΠΊΡΠ΅Ρ ΠΠ΅ΡΡΡΠ½ΠΈΠΊΠ°)
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ Π²Π·Π³Π»ΡΠ΄ Π½Π° ΠΌΠΈΡ
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΌΠΈΡΠΎΠ²ΠΎΠ·Π·ΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ½ΡΡΠΈΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ (ΠΈΠ»ΠΈ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ) ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡΠ° ΡΠ΅ΡΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π²Π·Π³Π»ΡΠ΄ Π½Π° ΠΌΠΈΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘Ρ Π΅ΠΌΠ° (Β«Π‘Ρ Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎΠ΅ ΠΌΠΈΡΠΎΠ²ΠΎΠ·Π·ΡΠ΅Π½ΠΈΠ΅Β»). ΠΠ°Π½Π½ΠΎΠ΅ ΠΌΠΈΡΠΎΠ²ΠΎΠ·Π·ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π»Π΅Π³ΠΊΠΎ ΡΠΎΡΠ΅ΡΠ°Π΅ΠΌΡΠ΅, ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠ°, Β«Π·Π°ΡΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎΒ» ΠΏΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠΌΠΈ ΠΈ Π½Π΅ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ, Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΡ ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Ρ ΡΠ΅ΡΡΠ΅Π·Π½Π΅ΠΉΡΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ.
Π‘Ρ Π΅ΠΌΠ° Π½Π°ΡΠΈΠ½Π°Π»Π°ΡΡ ΠΊΠ°ΠΊ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠ΅ΠΎΡΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π‘Π΅ΠΉΡΠ°Ρ ΠΆΠ΅ ΠΎΠ½Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠΎΠ² (ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ ΠΠ’Π β ΠΠ°ΡΡΠ°ΡΡΡΠ΅ΡΡΠΊΠΈΠΉ Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΠ½ΡΡΠΈΡΡΡ) Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π‘Ρ Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌΠΈ, ΠΊΠ°ΠΊ DEC , Texas Instruments , Tektronix , Hewlett Packard ΠΈ Sun .
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π‘Ρ Π΅ΠΌΠ°?
Π‘Ρ Π΅ΠΌΠ° β ΡΡΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ, ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Β«ΡΠΈΡΡΡΠΉΒ» ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ (ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ!) ΠΏΡΠΈΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. Π‘Ρ Π΅ΠΌΠ° ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»Π°ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΌΠ°Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π·Π½ΡΡ ΡΡΠΈΠ»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ, ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΈ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΌ. Π‘ΡΠ°Π½Π΄Π°ΡΡ ΡΠ·ΡΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅Π³ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 50 (!) ΡΡΡΠ°Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ. Π‘Ρ Π΅ΠΌΠ° ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΡΠ°ΠΊ ΡΡΠΎ Π·Π΄Π΅ΡΡ ΠΏΠΎΠ»Π½ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ, ΡΠ΄ΠΎΠ±Π½ΡΡ Π΄Π»Ρ ΡΠ΅ΠΎΡΠ΅ΡΠΈΠΊΠΎΠ²; ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΌΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
Π‘Ρ Π΅ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΈ ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ . Π‘Ρ Π΅ΠΌΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ½ΡΡΠΈΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ .
ΠΠ° ΡΡΠΎ ΠΆΠ΅ ΠΏΠΎΡ ΠΎΠΆΠ° Π‘Ρ Π΅ΠΌΠ°? ΠΡ, ΠΎΠ½Π° ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΌΠ°Ρ ΠΈΠ²Π°Π΅Ρ Π½Π° ΠΠΈΡΠΏ. ΠΡΡΡΡ ΡΡΠΎ Π²Π°Ρ Π½Π΅ ΠΏΡΠ³Π°Π΅Ρ: Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ Π‘Ρ Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ (ΠΈ ΡΡΠΈΠΌ ΠΌΡ Π·Π°ΠΉΠΌΠ΅ΠΌΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ). Π§ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΠΎΡΠ½ΠΎΠ²Ρ Π‘Ρ Π΅ΠΌΡ, ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΡΠ°Π²Π½ΠΈΠΌ Π‘Ρ Π΅ΠΌΡ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ Β«ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉΒ» ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π‘ΠΈ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΡΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ Π‘Ρ Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΈΠ½ΡΠΈΠΊΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π‘ΠΈ:
Π‘Ρ Π΅ΠΌΠ° |
Π‘ΠΈ |
(+ 2 3 4) |
(2 + 3 + 4) |
(< low x high) |
((low < x) && (x < high)) |
(+ (* 2 3) (* 4 5)) |
((2 * 3) + (4 * 5)) |
(f x y) |
f(x, y) |
(define (square x) (* x x)) |
int square(int x) return (x * x) |
Π Π‘Ρ Π΅ΠΌΠ΅ Π²ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ. ΠΡΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ , ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ. ΠΡΠΎ ΡΠ΅Π·ΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ·ΡΠΊΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΡΠ»Π° ΠΈΠΌΠ΅ΡΡ ΠΎΡΠΎΠ±ΡΠ΅ ΠΏΡΠ°Π²Π°: ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π±Π΅Π· ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΈΠΌ ΠΈΠΌΠ΅Π½ (Π²ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅, ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π² ΠΠ΅ΠΉΡΠΈΠΊΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠΈΡΠ»ΠΎ Π½Π°Π΄ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π°Π·Π½Π°ΡΠ°ΡΡ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ!). Π€ΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ: ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ·Π°Π½Ρ ΠΈΠΌΠ΅ΡΡ ΠΈΠΌΡ.
Π Π‘Ρ Π΅ΠΌΠ΅, ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° lambda :
(lambd a (x) (* x x)); ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β ΡΡΠ½ΠΊΡΠΈΡ!
(define sq (lambda (x) (* x x))
(sq 9) ; 27
((lambda (x) (* x x)) 9) ; 27
((if (foo? x) * +) 2 3 4) ; Π΅ΡΠ»ΠΈ (foo? x) ΠΈΡΡΠΈΠ½Π½ΠΎ ,
; ΡΠΎ (* 2 3 4) ,
; ΠΈΠ½Π°ΡΠ΅ (+ 2 3 4)
(define (curried-add x) (lambda (y) (+ x y))
(define add3 (curried-add 3)) ; add3 - ΡΡΠ½ΠΊΡΠΈΡ
(add3 7) ; 10
((curried-add 3) 7) ; 10
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ:
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°;
ΠΠΌΠ΅Π½Π° ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ; ΠΈΠΌΠ΅Π½Π° Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ;
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ β ΠΎΠ΄Π½Π° ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΠΌ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ;
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π°Π΄ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠΎΡΠΌ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠΎΡΠΌΡ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ; Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠΎΡΠΌΠ°ΠΌΠΈ;
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Β«ΡΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉΒ» (;) ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ;
ΠΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ, ΠΎΠ½Π° Β«Π²ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΒ» ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Β«ΠΎΠΊΡΡΠΆΠ°ΡΡΠ΅ΠΉ ΡΡΠ΅Π΄ΡΒ», Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½Π° ΡΠΎΠ·Π΄Π°Π²Π°Π»Π°ΡΡ (ΡΠ°ΠΊ ΡΡΠΎ add 3 Π²ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ, ΡΡΠΎ X Π±ΡΠ»ΠΎ ΡΠ°Π²Π½ΠΎ ΡΡΠ΅ΠΌ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, Ρ.Π΅. Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ( lambda ( y ) (+ x y )) 7) ).
( define ( sq x ) (* x x )) β ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π΄ΡΡΠ³Π°Ρ ΡΠΎΡΠΌΠ° Π·Π°ΠΏΠΈΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
(define sq (lambda (x) (* x x))
ΠΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΡΠ΅ΠΌΡ Π²ΠΈΠ΄ΠΎΠ² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ:
ΠΠΎΠ½ΡΡΠ°Π½ΡΡ: "foo#\Z3βΡΡΡΠΎΠΊΠ°β
Π‘ΡΡΠ»ΠΊΠΈ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅: foo joe a - long - name @#$!+-*/%<>
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: ( lambda ( z ) (* z z z ))
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ: ( cube 37)
Π£ΡΠ»ΠΎΠ²ΠΈΠ΅: (if (< x 3) sqrt modulo)
ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: ( set ! x 5)
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ: ( begin ( write x ) ( write y ) ( newline ))
(ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π² ΡΡΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ)
Π‘Ρ Π΅ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ±ΡΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ :
ΠΠΈΡΠ΅ΡΡ (character): #\a #\A \#space #\newline
Π‘ΡΡΠΎΠΊΠΈ (string ): βΡΡΡΠΎΠΊΠ° ΡΠ΅ΠΊΡΡΠ°β
ΠΠ°ΡΡΠΈΠ²Ρ (Π²Π΅ΠΊΡΠΎΡΡ β vector ): #(1 2 βΡΡΡΠΎΠΊΠ°β #\ x 5)
Π‘ΠΏΠΈΡΠΊΠΈ (list): (a little (list of) (lists))
Π§ΠΈΡΠ»Π° (numbers): 47 1/3 2.3 4.3e14 1+3i
Π€ΡΠ½ΠΊΡΠΈΠΈ (function )
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (boolean , ΡΠΎΠΎΡΠ². ΠΈΡΡΠΈΠ½Π° ΠΈ Π»ΠΎΠΆΡ): # t # f
ΠΠΎΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΊΡΡΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ)
Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ (symbol , ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ): this - is - a - symbol foo a 32 > adfasf 23@#$%!<
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ:
ΠΠ΅ΠΊΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π»ΡΠ±ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ;
Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π±ΡΠΊΠ²Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ Π°Π»ΡΠ°Π²ΠΈΡΠ°, ΡΠΈΡΡΡ ΠΈ Π»ΠΈΡΠ΅ΡΡ + - . * / < = > ! ? : $ % _& ~ ^
Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ Π½Π΅ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Ρ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ Π±ΡΠΊΠ² (Ρ.Π΅. ΡΠΈΠΌΠ²ΠΎΠ»Ρ SYMBOL ΠΈ SyMboL ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ)
Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (Π½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ!)
ΠΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ (ΠΏΡΠΎΡΡΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°) ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ (Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ) Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π·Π½Π°ΠΊ, Π° Β«ΠΎΠΏΠ°ΡΠ½ΡΠ΅Β» (ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ) ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π½Π° Π²ΠΎΡΠΊΠ»ΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π·Π½Π°ΠΊ
Π§ΠΈΡΠ»Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ Π² Π‘Ρ Π΅ΠΌΠ΅: ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ (integer ) ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΡΠΎΠ±ΡΡ (rational ), Π΄ΡΠΎΠ±Ρ β Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ (real ), Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ β ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠΌ (complex ). Π§ΠΈΡΠ»Π° ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΡΡΡΡΡ ΠΏΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ (ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ β exact /inexact ):
(exact? 3); #t
(exact? 1/3); #t
(exact? 2.3##); #f
(+ 2/3 1/2 5/6); 2
(integer? 2); #t
(integer? 3/7); #f
(real? 2); #t
Π€ΠΈΠ»ΠΎΡΠΎΡΠΈΡ Π‘Ρ Π΅ΠΌΡ
ΠΠ΄Π½Π° ΠΈΠ· ΠΏΡΠΈΡΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π‘Ρ Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ½Π°ΡΠ°Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π² Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²ΠΎ β ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ. Π‘Ρ Π΅ΠΌΠ° ΠΎΡΠ΅Π½Ρ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½Π°: ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ Β«ΡΠΊΠ°Π·Π°ΡΡΒ» Π½Π° ΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΎΠ΄Π½Ρ ΠΌΡΡΠ»Ρ (Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅) ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. Π Π‘Ρ Π΅ΠΌΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ β ΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ β Β«Π³ΠΎΠ²ΠΎΡΠΈΡΡΒ» Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Ρ ΠΎΡΠ΅Ρ. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΉ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΈΡΠΊΠ°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Β«ΠΎΠ±Ρ ΠΎΠ΄Π½ΡΠ΅ ΠΏΡΡΠΈΒ», ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡ Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ΅, Π° Π² Π‘Ρ Π΅ΠΌΠ΅ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ.
ΠΠ»Ρ Β«ΡΠ°Π·ΠΎΠ³ΡΠ΅Π²Π°Β» Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΡΡΠΎΠΈΠΌ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Β«ΠΏΠ°ΡΠ°Β» (pair ). ΠΠ°ΡΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄ΠΎΡΡΡΠΏΠ° FIRST ΠΈ SECOND (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΠΠ ΠΠ«Π ΠΈ ΠΠ’ΠΠ ΠΠ). Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ°ΡΡ Π±ΡΠ΄Π΅Ρ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ PAIR . ΠΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ: ( first ( pair 1 2)) ΡΠ°Π²Π½ΠΎ 1, ( second ( pair 1 2)) ΡΠ°Π²Π½ΠΎ 2. ΠΠ»Ρ Π·Π½Π°ΡΡΠΈΡ ΠΠΈΡΠΏ Π² ΡΡΠΎΠΌ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΡΡΠΈΠΎ: PAIR , FIRST , SECOND ?
; 1. ΠΠ΅ΠΊΡΠΎΡ
; ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ (define PAIR vector ) , Π½ΠΎ ΡΠ°ΠΊ ΡΡΠΈΠ»ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΡΡΠ΅
(define (PAIR a b) (vector a b))
(define (FIRSTaPair) (vector-ref aPair 0))
(define (SECOND aPair) (vector-ref aPair 1))
; 2. Π€ ΡΠ½ΠΊΡΠΈΡ Π²ΡΠ±ΠΎΡΠ°
; ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΏΡΠΎ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ:
; ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ PAIR, Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ
; Π·Π½Π°ΡΠ΅Π½ΠΈΡ a ΠΈ b Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
(define (PAIR a b) (lambda (bool) (if bool a b)))
(define (FIRSTaPair) (aPair #t))
(define (SECOND aPair) (aPair #f))
; 3. ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
(define (PAIR (a b)
(lambda (msg)
(case msg ; ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ case Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ msg
; Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
((first ) a ) ; Π΅ΡΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ β ΡΠΈΠΌΠ²ΠΎΠ» first ,
; Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ a
((second) b))))
; Π°ΠΏΠΎΡΡΡΠΎΡ (β) ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ Π²ΡΡΠΈΡΠ»ΡΡΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
; (Π±Π΅Π· Π½Π΅Π³ΠΎ Π±ΡΠ»Π° Π±Ρ ΠΎΡΠΈΠ±ΠΊΠ° Β«ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°ΡΒ»)
(define (FIRSTaPair) (aPair βfirst))
(define (SECOND aPair) (aPair βsecond))
; 4. ΠΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ: Π² Π‘Ρ Π΅ΠΌΠ΅ ΡΠΆΠ΅ Π΅ΡΡΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Β«ΠΏΠ°ΡΠ°Β»!
(define PAIRcons)
(define FIRSTcar)
(define SECOND cdr)
; 5. ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄ΡΡΠ³ΠΈΠΌ
; ΡΡΠ½ΠΊΡΠΈΡΠΌ )
(define (PAIR a b) (lambda (proc) (proc a b)))
(define (FIRSTaPair) (aPair (lambda (x y) x)))
(define (SECOND aPair) (aPair (lambda (x y) y)))
Π‘ΠΌΡΡΠ» Π²ΡΠ΅Π³ΠΎ Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ: Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠ΅ Π²Π΅ΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ°Π·ΠΎΠ³ΡΠ΅Π»ΠΈΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΡΡΠ°ΡΡΠΉ Π΄ΠΎΠ±ΡΡΠΉ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» (Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ: ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» β ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°).
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° β ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅:
(define (fact n)
(if (< n 2)
(* n (fact (- n 1)))
ΠΠΎΠ³Π΄Π° Ρ (ΠΠ΅Π½ ΠΠΈΠΊΠΈ) Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΈΠ·ΡΡΠ°Π» ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ, ΡΠ°ΠΌΡΠΌ ΡΠ»ΠΎΠΆΠ½ΡΠΌ Π±ΡΠ»ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠΊΡΡΡΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π° ΡΡΠ΅ΠΊΠ΅. ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ΅ΠΊ Π²ΠΈΠ΄ΠΈΠΌΡΠΌ.
; ΡΡΠ½ΠΊΡΠΈΡ identity ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ²ΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ
(define (identity value) value)
; ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ ΡΠΎΡΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ fact
; (ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ½Π° Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ cfact )
(define (fact n) (cfact n identity))
; Π ΡΡΠ½ΠΊΡΠΈΡ cfact β Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»
(define (cfact n k)
(if (< n 2)
(k 1)
(cfact (- n 1)
(lambda (result) (k (* n result))))))
Π€ΡΠ½ΠΊΡΠΈΡ cfact β Π²Π΅ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ fact , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ Β«ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡΒ». ΠΠΌΠ΅ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Β«ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅Β», ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π²ΡΠ·ΠΎΠ² ( fact 3) :
(fact 3) ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ (cfact 3 identity)
(cfact 3 identity) ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ
(cfact 2
(lambda (result)
(identity (* 3 result)))) ; kβ
ΠΡΠΎ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π²
(cfact 1
(lambda (resultβ) ;; kββ
((lambda (result)
(identity (* 3 result))) ; ΡΡΠ½ΠΊΡΠΈΡ k"
(* 2 result β)) ; Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΉ k "
((lambda (resultβ) ;; kββ
((lambda (result)
(identity (* 3 result)))(* 2 resultβ))
) 1)
((lambda (result) (identity (* 3 result))) (* 2 1))
(identity (* 3 (* 2 1)))
(* 3 (* 2 1))
-> 6
ΠΡΠΎ β Π½Π΅ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ· ΠΏΡΠΎΡΡΡΡ Π²Π΅ΡΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΆΠ°ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠ΅. ΠΠ°ΡΠ΅ΠΌ ΠΆΠ΅ ΠΌΡ ΡΠ°ΠΊ ΡΠ΄Π΅Π»Π°Π»ΠΈ? Π‘ΠΌΡΡΠ» Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΏΡΡΡΠ°Π½ΠΎ Π½Π° ΡΡΠ΅ΠΊΠ΅. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎ Β«ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅Β» ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ Π΄ΡΡΠ³ΠΎΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½Π°ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ (Β«Π³Π΄Π΅ ΠΌΡ ΡΠ΅ΠΉΡΠ°ΡΒ») ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ. ΠΡΠ»ΠΈ Π½ΠΎΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π΅ΡΠ΅ Ρ ΡΠΆΠ΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠΌΡ Β«ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡΒ» ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ. ΠΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈ Π½Π°ΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π»ΡΡΡΠ΅ Π½Π° ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π»ΡΡΡΠ΅β¦
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Β«ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠΉΒ» ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠΎΠΈΡΡ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅, Π³ΠΈΠ±ΠΊΠΈΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΡΠΎΡΡΠΎ ΠΊΠ»Π°Π΄Π΅Ρ Π½Π° ΡΡΠ΅ΠΊ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ. ΠΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ΅ΠΊ, Π΅ΡΠ»ΠΈ Π²Π²Π΅Π΄Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ-Β«Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΒ». Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π²Π΅Π½ 1 (ΡΠ°ΠΊ ΠΊΠ°ΠΊ x *1 = x ).
(define (fact n)
; ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° Ρ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΠΎΠΌ
(define (cfact _n acc)
(if (< _n 2)
(cfact (- _n 1) (* _n acc))
; Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΠΎΠΌ, ΡΠ°Π²Π½ΡΠΌ 1
(cfact n 1)
ΠΠ½Π΅ΡΠ½Π΅ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ. Π Π‘Ρ Π΅ΠΌΠ΅ Π΅ΡΡΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Β«Ρ Π²ΠΎΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈΒ», ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅Π½ΡΠΆΠ½ΡΠΌΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠΈΠΊΠ»Ρ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΌΡ ΡΠ΅Π±Ρ Π² Β«Ρ Π²ΠΎΡΡΠΎΠ²ΠΎΠΉΒ» ΠΏΠΎΠ·ΠΈΡΠΈΠΈ (Ρ.Π΅. ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅) β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΈΠΊΠ».
ΠΡΠ°ΠΊ, ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π»ΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ, ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΡΡ. ΠΡΡΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ (ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ Β«ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉΒ») ΡΠΏΠΎΡΠΎΠ± ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ; Π½ΠΎ ΠΎΠ΄Π½Π° ΠΏΡΠΈΡΡΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π‘Ρ Π΅ΠΌΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΡ ΠΈ Π½Π°Π³Π»ΡΠ΄Π½Ρ. ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π±ΡΡΡΡΠΎ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ½Π°ΡΠ°Π»Ρ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΡΠ»Π΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈΡ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ β ΠΈ ΡΠΎΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅! ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΠΎΠΏΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° Π½Π° Π‘Ρ Π΅ΠΌΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠΎΡΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉ.
Π‘Ρ Π΅ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΆΠ½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Π½Π°Π΄ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ. ΠΠ΅ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°Ρ, ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΠ°Π·Π½ΡΡ Β«ΠΎΡΠΎΠ±ΡΡ ΡΠ»ΡΡΠ°Π΅Π²Β». ΠΠ΅ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΏΠΎΠΈΡΠΊ ΠΎΠ±Ρ ΠΎΠ΄Π½ΡΡ ΠΏΡΡΠ΅ΠΉ: ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½ΠΎ Π½Π΅ Π½Π° ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. Π‘Ρ Π΅ΠΌΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΈΠ»Π΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΌΠΎΠ΄Π½ΠΎΠ΅ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅, β ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΡΠΏΠΎΡΠ°Π±Π»ΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ Π‘Ρ Π΅ΠΌΡ; ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡ ΡΡΠΈΠ»Ρ ΠΈΠ»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΠ²ΡΠΊ. Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΡΡΡ Π‘Ρ Π΅ΠΌΡ Π΄Π΅Π»Π°Π΅Ρ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ. ΠΠΎΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ°ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΎΡ ΡΠ°ΡΡΠ΅ΠΉ, Β«Π·Π°ΡΠΎΡΠ΅Π½Π½ΡΡ Β» ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ/ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ·ΡΠΊΠ°/ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ΅Π³ΠΊΠΎΡΡΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π° ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π΅ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅Π»ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΠ»Π°ΠΆΠ΅Π½Π½ΡΡ , ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
ΠΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅, ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½ΠΎ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΡΡΠ°ΡΠΈΡΡ Π½Π° ΡΡΠΎ Π³ΠΎΠ΄Ρ, Π‘Ρ Π΅ΠΌΠ° β ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΡΠΏΠ΅Ρ Π°!
ΠΡΠ°ΡΠΊΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π‘Ρ Π΅ΠΌΡ.
Chez Scheme ΠΈ MacScheme β ΠΎΠ΄Π½ΠΈ ΠΈΠ· Π»ΡΡΡΠΈΡ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ; ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² Π‘Ρ Π΅ΠΌΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΡΠ΅Π±Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ.
ΠΠ΄Π½Π° ΠΈΠ· Π»ΡΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌ Π΄Π»Ρ Windows ΠΈ Linux β MzScheme , ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π½Π° Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π΅ MrEd (ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ) ΠΈ DrScheme (ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΡΠ°ΠΌΠ°Ρ ΡΠ΄ΠΎΠ±Π½Π°Ρ ΡΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈΠ· ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ).
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Scheme ΡΠΏΠΎΡ Π±ΡΠ» ΡΠ΄Π΅Π»Π°Π½ Π½Π° ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎΡΡ ΡΠ·ΡΠΊΠ°. Π€ΠΈΠ»ΠΎΡΠΎΡΠΈΡ ΡΠ·ΡΠΊΠ° ΠΏΠΎΠ΄ΡΡΡΠΊΠ½ΡΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡΡΠΊΠ°Ρ. ΠΠ³ΠΎ ΡΠ΅Π»Ρ - Π½Π΅ ΡΠ²Π°Π»ΠΈΠ²Π°ΡΡ Π² ΠΊΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°, Π° Π½Π°ΠΏΡΠΎΡΠΈΠ² - ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ»Π°Π±ΠΎΡΡΠΈ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² ΡΠ·ΡΠΊ Π½ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, Scheme ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ°Π·ΠΈΡΡ Π²ΡΠ΅, ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΏΡΡΡΠΌ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΈ Π½Π°Π΄ Π½ΠΈΠΌΠΈ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΠ·ΡΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 2 ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»ΠΎΠ²:
- Β«ΠΎΡΡΠ°ΡΠΎΡΠ½Π°ΡΒ» ΠΈΠ»ΠΈ Β«Ρ Π²ΠΎΡΡΠΎΠ²Π°ΡΒ» ΡΠ΅ΠΊΡΡΡΠΈΡ (Π°Π½Π³Π». tail recursion )
- ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ (Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°).
Scheme Π±ΡΠ» ΠΏΠ΅ΡΠ²ΡΠΌ Π΄ΠΈΠ°Π»Π΅ΠΊΡΠΎΠΌ ΠΠΈΡΠΏΠ° , ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΠΈΠΌ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ (Π° Π½Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅) ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π³Π°ΡΠ°Π½ΡΠΈΡΡΡΡΠΈΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Ρ Π²ΠΎΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ»Π΅Π²ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (#t ΠΈ #f Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π½Π΅ΡΠΊΠ»ΡΠΆΠΈΡ T ΠΈ NIL). ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ» ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ ΡΠ·ΡΠΊΠΎΠ², Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ (Π°Π½Π³Π». continuations ). ΠΠ°ΡΠΈΠ½Π°Ρ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ R^5RS, ΡΠ·ΡΠΊ ΠΏΡΠΈΠΎΠ±ΡΠ΅Π» ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΡΠ½ΠΎΠ΅ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Ρ Β«ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ΠΌ Π³ΠΈΠ³ΠΈΠ΅Π½ΡΒ» (Π°Π½Π³Π». hygienic_macro ). Π Scheme ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Β«ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° Β» (Π°Π½Π³Π». garbage collection ), ΡΠΎ Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ ΡΠ·ΡΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΏΠΈΡΠΊΠΈ ΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ (Β«Π²Π΅ΠΊΡΠΎΡΡΒ»). Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌΠΎΠΌ, (ΠΏΠΎΠΊΠ°) Π½Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΡΡΠΊΡΡΡ Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΅Π΄ΡΡΠ² ΠΠΠ - Π²ΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ ΠΏΠΎ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΡ, Ρ ΠΎΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠ·ΡΠΊΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ.
ΠΠ°ΠΊ ΠΊΡΡΡΡΠ·, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° Schemer Π±ΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° Π½Π°ΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ·-Π·Π° ΡΠΎΠ³Π΄Π°ΡΠ½Π΅Π³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° Π΄Π»ΠΈΠ½Ρ ΠΈΠΌΡΠ½ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ITS.
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΠΎΡΡΡΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
(+ 2 (* 2 2 ) ) (+ 1 2 3 4 )
ΠΡΠ·ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ» ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΠΊΠΎΡΠΎΡΡΠΉ, Π² ΡΡΡΠ½ΠΎΡΡΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ) Π²ΡΠ΅Π³Π΄Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ.
ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ ΡΠΈΠΏΠ°
(number? 5 ) (number? "foo" ) (string ? "foo" )
ΠΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ, ΠΈΠΌΠ΅Π½Π° Π²ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠΎΠ² Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ? .
ΠΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ
(eq? "foo" "bar" ) (eq? 5 (+ 2 3 ) ) (eq? (eq? 2 3 ) (eq? 3 4 ) )
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π΄Π»Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ push/pop
(define-syntax push! (syntax-rules () ((push! x l ) (set! l (cons x l ) ) ) ) ) (define-syntax pop! (syntax-rules () ((pop! l ) (let ((x (car l ) ) ) (set! l (cdr l ) ) x) ) ) )
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ
;; ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π» Π² (Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΌ) ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΌ ΡΡΠΈΠ»Π΅ (define (fact x) (if (< x 3 ) x (* (fact (- x 1 ) ) x) ) ) ;; ΡΡΠ½ΠΊΡΠΈΡ Π€ΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ - ΡΡΠ΅Π±ΡΠ΅Ρ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ (define (fib n) (cond ((= n 0 ) 0 ) ((= n 1 ) 1 ) (else (+ (fib (- n 1 ) ) (fib (- n 2 ) ) ) ) ) ) ;; ΡΡΠΌΠΌΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ° Π² Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΠΎΠΌ Π΄Π»Ρ Scheme ΡΡΠΈΠ»Π΅ ;; (Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ loop Π²ΡΡΠ°ΠΆΠ°Π΅Ρ ΡΠΈΠΊΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ;; Ρ Π²ΠΎΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ-Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΠ°) (define (sum-list x) (let loop ((x x) (n 0 ) ) (if (null? x) n (loop (cdr x) (+ (car x) n) ) ) ) ) (fact 14 ) (fib 10 ) (sum "(6 6 6 100 ) ) (sum (map fib "(1 2 3 4 ) ) )
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ:
(define ΠΈΠΌΡ_ΡΡΠ½ΠΊΡΠΈΠΈ (lambda (ΡΠΏΠΈΡΠΎΠΊ_Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²) (ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ_ΡΡΠ½ΠΊΡΠΈΠΈ) ) ) ,
Ρ ΠΎΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΠ°ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎΠΊΡΠ°ΡΡΠ½Π½ΡΡ ΡΠΎΡΠΌΡ:
(define (ΠΈΠΌΡ_ΡΡΠ½ΠΊΡΠΈΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ) (ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ_ΡΡΠ½ΠΊΡΠΈΠΈ) ) .
ΠΠ²ΠΎΠ΄ / ΠΡΠ²ΠΎΠ΄
(write (+ (read ) (read ) ) )
Π‘ΡΡΠ»ΠΊΠΈ
Π ΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ
ΠΠ½Π³Π»ΠΎΡΠ·ΡΡΠ½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ
Π£ΡΠ΅Π±Π½ΠΈΠΊΠΈ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ
- ΠΠΈΠ΄Π΅ΠΎ-Π»Π΅ΠΊΡΠΈΠΈ Β«Structure and Interpretation of Computer ProgramsΒ» , Harold Abelson ΠΈ Gerald Jay Sussman
- The Scheme Programming Language , R. Kent Dybvig
Wikimedia Foundation . 2010 .
Π‘ΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ "Scheme (ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ)" Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΠΎΠ²Π°ΡΡΡ :
Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ Π·Π½Π°ΠΊΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°Π±ΠΎΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ , ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠ°Π²ΠΈΠ», Π·Π°Π΄Π°ΡΡΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ,β¦ β¦ ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΡ