再帰プログラミング

情報科学概論IIA

                                       電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/Joka2a-1998/1998-06-02
あるいは、次のページから手繰っていくこともできます。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/
http://www.hlla.is.tsukuba.ac.jp/~yas/index-j.html

◆DrScheme

Scheme の処理系が変わりました。 今までの scheme 48 から Dr.Scheme に。 sin, cos も問題なく動きます。

■先週の課題への応答

先週の課題(教科書31ページ〜33ページの「4.5演習問題」)のチェック・ ポイント

◆一般的な話

予想と違っていた所がちゃんと分かるように書くこと。

◆letの結果

処理系が変わったので、let の動きが少し違うようです。同じ変数を何度か定 義するとエラーになるようです。

◆letがlambdaでかける

let は、lambda でかけます。

◆スコープ

変数のスコープという考え方を身に付けるように。 「同時」というのとは少し違います。 スコープの問題です。let だと、外側の x が使われ、let* だと、同じ並びの左の x が使われます。

◆束縛変数

let や lambda では、束縛された変数という考え方があります。

◆lambdaとquote

lambda には、quote と同じように、本体の評価を止める機能があります。

◆id

次の結果を考えてみてください。
(define f (lambda (x) x))
(f 10)
(f f)

◆単項演算子 -

-x と書いても、負の数は得られません。Lisp では、(- x) と、- という手続 きを呼びます。- には、1引数のもの(符号を反転させる)と2引数のもの (引き算)があります。

◆mycadr

mycadr という手続きを定義してください。
(define (mycadr x) ...... )
あるいは、
(define mycadr (lambda (x) ...... ))

■今日の課題

教科書62ページ〜52ページの「6.7演習問題」のうち、 1. 〜 5. をやりなさい。 時間内にできたものについて、プログラムと実行結果を次のような電子メール で送りなさい。
To: yas
Subject: [joka2a] enshuu-6.7

余裕がある人は、「6.7演習問題」の他の問題に進みなさい。


Last updated: 1998/06/02 13:32:24
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>