next up previous
Next: この文書について... Up: ソフトウェア特論 講義資料 Scheme言語とインタプリタ Previous: 10.0.2 Kawaでの実行

練習問題

  1. Schemeにおいて,letの中でfactを定義してクロージャの:envスロットが どうなっているかを調べてみよ.
  2. Scheme言語で定義された integral を参考に、以下の ような働きをするsigmaを定義せよ。
    <cl> (sigma #'(lambda (x) x) 0 #'1+ 10)
    55 
    <cl> (sigma #'(lambda (x) (* x x)) 0 #'1+ 10)
    385 
    <cl> (sigma #'(lambda (x) (* x x x)) 0 #'1+ 10)
    3025
    
  3. Schemeの処理系で以下のような実行を行なった。
    
    <cl> (scheme-interpreter)
    
    ==> (letrec ((x car) (y x)) (y '(a b c)))
    
    ==> ((lambda (x)
           (let ((x 1) (y x)) (list x y)))
          2)
    
    ==> ((lambda (x)
           (letrec ((x 1) (y x))
              (list x y)))
         2)
    
    ==> ((lambda (x)
           (let* ((x 1) (y x)) (list x y)))
         2)
    
    ==> ((lambda (y)
           (letrec ((x (lambda (x) (list x)))
                    (y 1))
                (x y)))
         2)
    
    各答えはどうなるか、答えよ。


generated through LaTeX2HTML. M.Inaba 平成18年5月6日