の
3
つのステップが繰り返されています。図2.1
でカーソルのある行をみると、>
となっています。この表示での >は、
Scheme
処理系のプロンプトです。ここでScheme
プログラムを入力すると、その結果が計算され 、画面に表示されます。
Scheme
のプログラムは、すべて式を単位にして記述されます。プログラムの実行も、式の形で処理系に与えます。
2.4.1 手入力による実行
例として
30+26
を計算する式を実行してみましょう。Scheme
でこれを表す式は (+ 3026)となります。
Scheme
でプログラムを実行するときは、最初に開き括弧 ( を書きます。つぎに、実行するプログラムの名前を書きます。プログラムの名前の後には、そのプログラムに与える データを書きます。そして最後に、閉じ括弧) を書きます。
今の例ですと、プログラム名は+
(
足し算をするプログラム)
で、20 と 26がプログラムに与えるデータ
(
それぞれ数の20
と26)
です。では、(+ 30 26)を入力してください。もしタイプミスをしたときは、
DEL
キーで文字の消去できます。入力が終れば 、
C-j (
コントロールキーを押しながらj
を押します)
を入力してください。なお
C-j
は、入力した式の実行を始めなさい、という合図です。(Scheme
処理系によっては、
DEL
の代わりにBS
または ( を使うものもあります。また、C-j
の代わりに
RET
を使うものもあります。)
> (+ 30 26)
C-j
;Evaluation took 0 mSec (0 in gc) 0 cons work 56
表示について説明します。あなたの入力した部分が (+ 30 26) で 、その次の行に表示さ れている;Evaluation took 0 mSec (0 in gc) 0 cons work は、その計算
(
式の実行)
にかかった時間などを表しています。その次の行の表示56
(= 30 + 26)
が実行結果です。実行結果の表示の次の行には、再びプロンプト > が表示されます
:
> (+ 30 26)
;Evaluation took 0 mSec (0 in gc) 0 cons work 56
>
さらに続けて別の式の実行ができます。次の例では 、
4
5
の計算をする式を実行させ ています。> (* 4 5)
C-j
;Evaluation took 0 mSec (0 in gc) 0 cons work 20
>
上の例では、足し算やかけ算をするプログラムに数そのものを与えただけでした。数の 代わりに別の式を書くこともできます。
> (+ 3 (* 2 4))
C-j
;Evaluation took 0 mSec (0 in gc) 0 cons work 11
この例は、
3+(2
4)
を計算する式です。まず最初に (* 2 4)が計算されて8
となり、この結果が置き換えられます。その次に
3 + 8
が計算され 、結果11
を得ます。以上により、簡単な式の計算を
Scheme
処理系を使ってできるようになりました。2.4.2 プログラムファイルの読み込み
プログラムが長いと、そのつど 手で入力するのは大変です。プログラムをファイルに書 いておき、それを
Scheme
処理系に読み込ませることもできます。(
なお、ファイルにプログラムを書く方法は第
7
章で学びます。)
プログラムファイルを読み込ませることをロード
(load)
といいます。その方法は、次の ように procを使います。> (load "sum.scm")
C-j
;loading "sum.scm"
;done loading "sum.scm"
;Evaluation took 7 mSec (0 in gc) 77 cells work, 87 bytes other
#<unspecified>
>
ここで "sum.scm"は、プログラムファイルのファイル名です。
2.5 ログアウト
今度はコンピューターの使用を終了する方法を説明します。このことをログアウト
(lo-gout)
といいます。ログアウトをするには、次のように入力してください。% logout
RET
すると画面には、ログ イン前の表示 login:
になるはずです。これで計算機の使用が終了し 、すべてが済んだことになります。
注意
: Scheme
処理系を終了した後、ログアウト するのを忘れないようにしましょう。練習問題
下にいくつかの
Scheme
の式があります。それぞれ実行すると、どのような計算結果にな るか考えなさい。そしてそれが正しいか、実行して確かめなさい。1.
(+ 1 2 3)2.
(* 4 6)3.
(- 10 2)4.
(+ (* 2 3) 4)5.
(* (+ 1 2) (+ 3 4))6.
(/ 100 (+ 1 1))「實は僕たちも、あなた一人をあてにして、さつきからここでお待ちしてゐたのです。
きっとあなたも招待されてゐると思ひましたから。」
「いや、そんなにあてにされると僕も少し困るのだが。」
私たち三人は、力無く笑つた。
太宰治 「不審庵」
『黄村先生言行録』収録 昭和二十二年 日本出版株式会社刊
Scheme 入門 ( 初級編 )
本章ではプログラミング言語
Scheme
の文法の基礎を学習します。出てきた例をScheme
処理系で実際に実行し 、動作を確認するようにしてください。例をいろいろ変更して試し てみると、より深く身につきます。
Scheme
プログラムには括弧がたくさんあるので、戸惑うかもしれません。ですがScheme
を学んでプ ログラムを書いてゆくうちに 、括弧に対するアレルギ ーが 取れてゆきます。
(NGSCM
やMule
のように、閉じ括弧を入力すると、対応する開き括弧が点滅する機能を持つテキストエデ ィタを使えば 、括弧を恐れることはありません。
)
3.1 入力 - 評価 - 表示ループと式
Scheme
処理系が起動されると、次のようにプロンプトが出ています。(Scheme
処理系によっては、プロンプトが違う場合があります。
)
>
ここで 2001 を入力し 、最後に
C-j (
コントロールキーを押しながら、j
を押す)
を入力します。
(
別のScheme
処理系の場合は、RET
キーの場合があります。)
> 2001
C-j
すると、 次のような表示になります。
> 2001
;Evaluation took 33 mSec (0 in gc) 45 cons work 2001
>
ここで 2001のように斜体で印刷されている部分が 、
Scheme
処理系のの出力(Scheme
の計算結果
)
です。25
;Evaluation took 33 mSec (0 in gc) 45 cons work
の行は
NGSCM
特有の表示で、計算に要した時間などを表しています。(
別のScheme
処理系ではこの行は表示されなかったり、別のものが表示されているかもしれません。
)
以降ではこの行は省略します。
注意
:
実際のシステムでは上記のように斜体で表示はされません。利用者の入力とScheme
の出力とが区別がつくように、本書では
Scheme
の出力を斜体で書いています。また、 こ れまでは利用者の入力する部分には下線を引き、最後にC-j
を書いていましたが 、これ以 降はそれらを省略します。こんどは 、
3 + 5
の計算をしてみましょう。Scheme
への入力は 、(+ 3 5) です。前の章でも説明しましたが 、
Scheme
では3 + 5
を表すのに (+ 3 5)と、呼び出す実行する手 続き名(
プログラム名)
+を書き、手続きに与えるひきすう
引数
(
パラメーターとも呼ばれます)
3 5を書き、それら全体を括弧でくくる、 という書き方をします。なお、+は足し算を計算す る手続きの名前です。
> (+ 3 5) 8
これが実行され 、計算結果