From b97cc65f8d4f52589def395b6e5433060dad9880 Mon Sep 17 00:00:00 2001 From: Darcy Shen Date: Tue, 19 Mar 2024 17:33:02 +0800 Subject: [PATCH] =?UTF-8?q?SICP=2006:=20=E4=BB=A3=E7=A0=81=E6=B8=85?= =?UTF-8?q?=E5=8D=95=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SICP/code06.tm | 172 +++++++++++++++++++++---------------------------- 1 file changed, 73 insertions(+), 99 deletions(-) diff --git a/SICP/code06.tm b/SICP/code06.tm index 0a68323..0bd694d 100644 --- a/SICP/code06.tm +++ b/SICP/code06.tm @@ -25,64 +25,89 @@ <\folded-io|Scheme] > - (plot `(graphics (point -5 -5) (point 5 5))) ; quasiquote ` + (plot `(graphics (point "-5" "-5") (point "5" "5"))) ; quasiquote ` <|folded-io> |>> <\folded-io|Scheme] > - (plot `(graphics (point ,(+ 1 2) ,(+ 1 3)) (point 0 0))) + (plot `(graphics (point ,(number-\string (+ 1 2)) + ,(number-\string (+ 1 3))) (point 0 0))) <|folded-io> |gr-grid-old||1>|gr-edit-grid-aspect|||>|gr-edit-grid||gr-edit-grid-old||1>||>>> <\folded-io|Scheme] > - (plot `(graphics (point 0 0) (point 1 1) (line (point 0 0) (point 1 - 1))))) + (plot `(graphics (point "0" "0") (point "1" "1") (line (point "0" "0") + (point "1" "1"))))) <|folded-io> |||>>> - <\unfolded-io|Scheme] > + <\folded-io|Scheme] > (plot `(cline (point 0 0) (point 3 0) (point 0 4))) - <|unfolded-io> + <|folded-io> ||>> - + - <\unfolded-io|Scheme] > + <\folded-io|Scheme] > (kbd-map ("d i a n var" (insert (utf8-\cork "\<#70B9\>")))) - <|unfolded-io> + <|folded-io> ("d i a n tab") - + - <\unfolded-io|Scheme] > + <\folded-io|Scheme] > (kbd-map ("h t var" (insert (utf8-\cork "\<#7ED8\>\<#56FE\>")))) - <|unfolded-io> + <|folded-io> ("h t tab") - + - <\unfolded-io|Scheme] > + <\folded-io|Scheme] > (kbd-map ("t u var" (insert (utf8-\cork "\<#56FE\>")))) - <|unfolded-io> + <|folded-io> ("t u tab") - + - <\unfolded-io|Scheme] > + <\folded-io|Scheme] > (kbd-map ("s j x var" (insert (utf8-\cork "\<#4E09\>\<#89D2\>\<#5F62\>")))) - <|unfolded-io> + <|folded-io> ("s j x tab") - + - <\unfolded-io|Scheme] > + <\folded-io|Scheme] > (kbd-map ("z s j x var" (insert (utf8-\cork "\<#6B63\>\<#4E09\>\<#89D2\>\<#5F62\>")))) - <|unfolded-io> + <|folded-io> ("z s j x tab") - + + + <\folded-io|Scheme] > + (define (scm2stm x) + + \ \ (define (x-\string x) + + \ \ \ \ (cond ((number? x) (number-\string x)) + + \ \ \ \ \ \ \ \ \ \ ((list? x) (scm2stm x)) + + \ \ \ \ \ \ \ \ \ \ (else x))) + + \ \ (if (eq? () x) + + \ \ \ \ \ \ () + + \ \ \ \ \ \ (cons (x-\string (car x)) + + \ \ \ \ \ \ \ \ \ \ \ \ (scm2stm (cdr x)))))) + <|folded-io> + scm2stm + <\unfolded-io|Scheme] > - (define (\<#7ED8\>\<#56FE\> l) (stree-\tree l)) + (define (\<#7ED8\>\<#56FE\> x) + + \ \ (stree-\tree (scm2stm x))) <|unfolded-io> \<#7ED8\>\<#56FE\> @@ -93,7 +118,7 @@ \<#70B9\> - <\folded-io|Scheme] > + <\unfolded-io|Scheme] > (define (\<#56FE\> . objects) \ \ (cond ((nlist? objects) '(graphics "" "")) @@ -101,14 +126,14 @@ \ \ \ \ \ \ \ \ ((== objects '()) '(graphics "" "")) \ \ \ \ \ \ \ \ (else `(graphics "" ,@objects)))) - <|folded-io> + <|unfolded-io> \<#56FE\> - + <\folded-io|Scheme] > (\<#7ED8\>\<#56FE\> (\<#56FE\> (\<#70B9\> 1 1) (\<#70B9\> 2 2))) <|folded-io> - |1>|gr-grid-old||1>|gr-edit-grid-aspect|||>|gr-edit-grid||1>|gr-edit-grid-old||1>|gr-frame|>|magnify|3.0||>>> + |>> <\unfolded-io|Scheme] > @@ -116,12 +141,14 @@ \ \ `(cline ,x ,y ,z)) <|unfolded-io> - \<#4E09\>\<#89D2\>\<#5F62\> + triangle - <\input|Scheme] > + <\unfolded-io|Scheme] > (define (\<#4E09\>\<#89D2\>\<#5F62\> x y z) (triangle x y z)) - + <|unfolded-io> + \<#4E09\>\<#89D2\>\<#5F62\> + <\unfolded-io|Scheme] > (\<#7ED8\>\<#56FE\> (\<#4E09\>\<#89D2\>\<#5F62\> (\<#70B9\> 0 0 ) @@ -149,92 +176,39 @@ <\unfolded-io|Scheme] > - (define (\<#6B63\>\<#4E09\>\<#89D2\>\<#5F62\> A \<#8FB9\>\<#957F\>) + (define (\<#6B63\>\<#4E09\>\<#89D2\>\<#5F62\> A a) \ \ (\<#4E09\>\<#89D2\>\<#5F62\> \ \ \ \ \ \ \ A - \ \ \ \ \ \ \ (\<#70B9\> (+ \<#8FB9\>\<#957F\> (second A))) + \ \ \ \ \ \ \ (\<#70B9\> (+ a (second A)) \ \ \ \ \ \ \ \ \ \ \ (third A)) - \ \ \ \ \ \ \ (\<#70B9\> (+ (* 0.5 \<#8FB9\>\<#957F\>) + \ \ \ \ \ \ \ (\<#70B9\> (+ (* 0.5 a) (second A)) - \ \ \ \ \ \ \ \ \ \ \ \ \ \ (second A)) - - \ \ \ \ \ \ \ \ \ \ \ (+ (third A) (* (sqrt 0.75) - \<#8FB9\>\<#957F\>)))))) + \ \ \ \ \ \ \ \ \ \ \ (+ (third A) (* (sqrt 0.75) a)))))) <|unfolded-io> \<#6B63\>\<#4E09\>\<#89D2\>\<#5F62\> + <\input|Scheme] > + \; + + + <\unfolded-io|Scheme] > + (scm2stm (\<#6B63\>\<#4E09\>\<#89D2\>\<#5F62\> (\<#70B9\> 0 0) 3)) + <|unfolded-io> + (cline (point "0" "0") (point "3" "0") (point "1.5" + "2.598076211353316")) + + <\unfolded-io|Scheme] > (\<#7ED8\>\<#56FE\> (\<#6B63\>\<#4E09\>\<#89D2\>\<#5F62\> (\<#70B9\> 0 0) 3)) <|unfolded-io> - - - - <\unfolded-io|Scheme] > - (define (point x y) `(point ,x ,y)) - <|unfolded-io> - point - - - <\unfolded-io|Scheme] > - (point 1 2) =\ (point "1" "2") - <|unfolded-io> - (point 1 2) - - - <\unfolded-io|Scheme] > - (number? 1) - <|unfolded-io> - #t - - - <\unfolded-io|Scheme] > - (number-\string 1) - <|unfolded-io> - (number-\string 1) - - - <\unfolded-io|Scheme] > - \; - <|unfolded-io> - x-\string - - - <\unfolded-io|Scheme] > - (define (draw x) - - \ \ (define (x-\string x) - - \ \ \ \ \ \ (if (number? x) - - \ \ \ \ \ \ \ \ (number-\string x) - - \ \ \ \ \ \ \ \ x)) - - \ \ (define (draw-inner x) - - \ \ \ \ (if (eq? () x) () - - \ \ \ \ \ \ (cons (x-\string (car x)) - - \ \ \ \ \ \ \ \ \ \ \ \ (draw-inner (cdr x))))) - - \ \ (stree-\tree (draw-inner x))) - <|unfolded-io> - draw - - - <\unfolded-io|Scheme] > - (draw `(point 1 1)) - <|unfolded-io> - > + ||>> <\input|Scheme] >