Schemeで算数/数学をしてみよう。

最初に心理テストをしてみましょう。

川で子供が溺れています。助ける?助けない?


この心理テストによって、あなたが川で溺れている子供を助けるか助けないかが分かります。「助ける」を選んだあなたは、口では助けると言っておきながら、いざとなると川に飛び込む勇気のないチキン野郎です。「助けない」を選んだあなたは、人間として最低です。いや、人間と呼ぶこともはばかられます。ということで、心理テストに回答した時点で負け組なあなたは、Schemeのお勉強を頑張りましょう。


今週の土曜日は、9LISP 002です。今回の課題は、Schemeの実行環境を作ることと、Schemeの基礎をおさえること。実行環境はできていますか?まだの人は、こちらのエントリーを参考にしてください。

Schemeで四則演算

それでは、算数からはじめましょう。DrSchemeを使っている人は、エディタの下のコンソールに下のようにタイプしてください。

(+ 1 2)


はい。結果が3と表示されましたか?100と表示された人は、パソコンを買い替えた方がいいかもしれません。さて、上のプログラム(これも立派なプログラムです)の意味を説明しましょう。まずは、括弧の中身。なんとなく想像がつくでしょう?あなた、間違っていませんよ。+ 1 2というのは、1 + 2ということですね。


Schemeの場合、+は記号ではなくて関数なんです。なので、「関数 引数1 引数2」というノリですね。ノリです。それが、括弧でくくられています。これは、関数を実行しろと言っているのです。(+ 1 2)で、1 + 2を計算しろと。簡単ですね。


引数(関数に渡す値)は、+の場合、何個でもOKです。ですから、(+ 1 2 3 4)とすると、10と表示されます。36と表示された人は、目を疑ってください。このノリで、四則演算ができます。

(+ 1 2)
(- 3 2)
(* 3 4)
(/ 6 3)


これで、四則演算は完璧です。持っている電卓をバッキバキにぶっ壊してください。

Schemeでチョイムズな算術演算

四則演算だけで世の中を渡りあるこうというのは、考えが甘すぎます。今度は、割り算の商と余りを求めてみましょう。商を求めるには、quotient関数を使います。余りを求めるには、remainderまたはmodulo関数を使います。

(quotient 5 2)
(remainder 5 2)


ルートを求めるのは、sqrt関数です。

(sqrt 9)
三角関数

三角関数の計算もできますよ。三角関数って何?帰れ!sin, cos, tan, asin, acos, atanがそのまま使えます。

(sin 1)
指数関数/対数関数

指数関数は、expです。対数関数は、logです。2の10乗は下のように求めます。

(expt 2 10)


どうでしたか?ここまでに出てきた関数を組み合わせると、複雑な計算を行うことができます。例えば、(1 + 2) * (3 + 4)を計算してみましょう。

(* (+ 1 2) (+ 3 4))


先に+を実行して、最後に*を実行するノリです。ノリです。学生の皆さん、これで算数/数学の宿題もバッチリですね。ここまでの内容で疑問質問がある人は、コメント欄に書き込んでください。気分が乗ったら答えます。ウソです。できる限り答えます。むしろ、9LISP勉強会のテーマにします。


それでは、最後に心理テストをもうひとつ。赤、青、緑の3枚のカードに動物の絵が描かれています。ネコの絵が描かれているのは何色のカードですか?


正解は、青色のカードです。