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

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

scheme

続・Scheme演習第2回-問1

前回は、 とりあえず、3つめの時間の比較は次回以降にして、今回はfib1とfib2のみ作った。 「Scheme」の検索結果 - にたまごほうれん草 という状況なので、時間を計測してみた。 まず、 時間計測にはtimeという関数を使う for文みたいなのはないので、繰り返…

Scheme演習第2回-問1

一昨日に引き続きScheme演習の問題を解いてみる。 問1(末尾再帰)fibonacci 関数は次のように定義される。 (ここに定義の図) この定義をそのまま使って関数 (fib1 n) を作れ。 末尾再帰を使って、n に対して線形の時間で求める関数 (fib2 n) を作れ。そ…

演習を解いてみる

いいもの見つけた。しばらくは、これを解いて慣れていこう。 5つの整数を引数として受け取り、そのうち偶数が奇数より多い場合は#tを返し、奇数が偶数より多い場合は#fを返す述語even>odd?を定義せよ。当然、いろいろな定義の仕方がある。 > (even>odd? 1 2 …

関数を定義してみる

簡単な再帰を使った階乗。 gosh> (define (fac n) (if (= n 1) 1 (* n (fac (- n 1))))) fac gosh> (fac 5) 120 gosh> (fac 8) 40320ふむふむ。括弧が最後にたくさんついて数を数えるのが大変。 インタラクティブモードでのgoshも、Emacsに付属のscheme-mode…

久しぶりのScheme

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