]>
<< ソフトウェア開発技術者試験 | main | 式を入力してみる >>
わたしは英語で使ってますが、中身は一緒です。
ウィンドウが二段にわかれているのがわかります。
とりあえず下の段の 『>』 のところをクリックして、キャレット(文字入力カーソル)をもっていきます。
![]()
まず 『3』 と入力して、エンターキーを押してみましょう。
『3』と二回表示されています。
緑色が入力した文字、青色がDrSchemeが返した文字です。
DrSchemeに 『3』 を渡すと、 『3』 を返してくれるのがわかります。
![]()
次に『"a"』と入力して、エンターキーを押してみましょう。
『"a"』と二回表示されています。
さきほどと同様に、緑色が入力した文字、青色がDrSchemeが返した文字です。
DrSchemeに 『"a"』 を渡すと、 『"a"』 を返してくれるのがわかります。
![]()
上で"a"は文字列を意味します。
DrSchemeはダブルクォーテーション"で囲まれたものを文字列として認識します。
では、ダブルクォーテーションを使わず、単に 『a』 と入力するとどうなるでしょう。
![]()
天道虫と赤い文字が出てきました。エラーです。
『a』 って言われてもわかんないんです><
と言っています。
上の三種類の入力に対して、処理系のなかでいったい何が行われているのでしょう?
Schemeでは、 『3と入力してエンター』 する動作を、 『3』 を 『評価する』 といいます。
同様に、 『"a"と入力してエンター』 する動作を、 『"a"』 を『評価する』といいます。
上の例では 『3』 を評価した結果、青文字で 『3』 と表示されました。
これは、『3を評価した結果は3である』ということです。
また、 『"a"』 を評価すると青文字で 『"a"』 と表示されるのですから、
『"a"を評価した結果は"a"である』ということです。
『評価する』とはいったいどういうことなのか?
上の例では与えられた数字や文字列を鸚鵡返ししただけです。
数字や文字列を『評価する』と、その数字や文字列になります。
上の最後の例はエラーとなってしまいました。
これは『aを評価した結果がエラーである』、
つまり、aを評価しようと思ったけど出来なかったということです。
Schemeでは単に a と入力された場合、aは変数として扱われます。
ここでは 変数 a はなんか標識みたいなものだと思ってください。
標識には意味があります。
たとえば、『↑東京』という標識にそって進んでいけば、まず間違いなく東京に着きます。
同じように、a は矢印をもっています。その矢印の方向へずっと歩いていくと、『2』 という数字がありました。
これは、a は 『2』 を指し示す標識であるということ、つまり、変数 aの値が 『2』 であることを意味します。
エラーが起きた例では、変数 a という矢印はあるけれども、それは何にも指していない、
つまりa が意味のない標識だということです。
単に矢印だけの標識 『↑』 は、それがどこに通じているのかがわからなければ、
標識としては全く意味がありません。
標識に意味を持たせるためには、その矢印がどこを指しているのかしっかり定義してやる必要があります。
変数 aの矢印を数字の『2』に向けるには
(define a 2)
と入力してエンターします。
同じように、変数 bの矢印を文字列の『"a"』に向けるには
(define b "a")
と入力してエンターします。
define a 2
なんてやるとエラーになります。括弧でくくってあげてください。
![]()
『a』 と 『b』 を評価してみましょう。
処理系は変数 a と b の矢印をたどり、『2』 、『"a"』という数字、文字列をそれぞれ見つけます。
![]()
http://www.panopticon.jp/mt/mt-tb.cgi/5
コメントする