基本的なプログラムの作り方

情報科学概論IIA

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

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

■先週の課題への応答

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

◆一般的な話

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

◆nilの扱いについて

多くの Lisp の処理系では、nil という変数に、'() が入っています。 たとえば、emacs lisp などがそうです。 (正確には、nilは、単純な変数でもなく、特別扱いされる。) nil という変数は、Scheme にはありません。

◆変数

記号は、変数名になります。最初から定義されている変数名には、次のような ものがあります。 変数の値は、単なる数のこともありますが、記号のことも、対のことも、 手続きであることもあります。

変数名が現われると、インタプリタは、変数の値で置き換えようとします。 ただし、変数名がquote されていたら、

「+」を変数名だと思って、考えるとわかります。

(+ 2 3)
('+ 2 3)

ただし、次のようなものは、変数名ではありません。インタプリタが特別扱い します。(こういうものを special form と呼ぶことがあます。)

◆quote

内部的には、「''a 」と 「(quote (quote a)) 」は、まったく同じです。 「''a」と表示しているのは、Schemeインタプリタの親 切です。

「'」と「`」は違います。 「'」を使ってください。O2のキーボードでは右手の小指で打ちます。

「'a」に対して、「'a」と返すのも、Schemeインタプリ タの性質です。「a」と返すLispインタプリタもあります。

◆手続き

(1 2 3)と書くと、1を手続きだと思って実行しようとしてエラー になります。

◆エラー

エラーが起きると、その時点でインタプリタは、実行を中断します。

■今日の課題

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

余裕がある人は、次の演習問題(62ページ6.7)に進みなさい。


Last updated: 1998/05/26 12:37:33
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>