にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

久しぶりのScheme

最近Lispの処理系が一部で流行っているようなので、大学のプログラミング演習以来触っていなかったSchemeを少し触ってみました。
まずは、Scheme言語の標準R5RSに準拠したインタプリタGaucheをインストール。Ubuntuなので、

$ sudo apt-get install gauche

でOK。

$ gosh

インタラクティブインタプリタが起動するのでいくつか叩いて動作確認してみる。

算術演算

gosh> (+ 1 2)
3
gosh> (- 5 2)
3
gosh> (* 3 4)
12
gosh> (/ 6 3)
2
gosh> (/ 7 3)
7/3

最後の結果が予想外。
商や余りを求めるには、quotient・remainder(又はmodulo)という関数を使うようです。

gosh> (quotient 7 3)
2
gosh> (remainder 7 3)
1
gosh> (modulo 7 3)
1

あと、小数点をつければ小数に展開して演算してくれる。(これはどの言語でもそうか)

gosh> (/ 7.0 3.0)
2.3333333333333335

最後がなぜ5になるのかは不明。

リスト

car, cdr, consなつかしい。リストの概念図を見てノスタルジー爆発。

gosh> (cons 1 2 )
(1 . 2)
gosh> (cons (cons 1 2 ) 3)
((1 . 2) . 3)
gosh> (cons 1 (cons 2 3 ))
(1 2 . 3)
gosh> (car '(1 2 3))
1
gosh> (cdr '(1 2 3))
(2 3)