関数を定義してみます。
おとうさんスイッチ。おじいじゃんも可。いきますよぉー。
- おとうさんスイッチ「ら」
- ラクダ本を読む
- おとうさんスイッチ「り」
- LISPの処理系を実装する
- おとうさんスイッチ「る」
- Luaはプロトタイプベースだと説明する
- おとうさんスイッチ「れ」
- レキシカルスコープ
- おとうさんスイッチ「ろ」
- 論よりコード
さあ。遊んでるヒマはないですよ。Schemeで関数を書きます。まずは、Hello, wold!ですね。お約束です。お約束すぎて面白くないので、Hello, work!にしておきます。時事ネタ。時事ネタ。
; hello-l関数を書く (define hello-l (lambda () "Hello, work!")) ; hello-l関数を実行 (hello-l)
DrSchemeを使っている人は、上のエディタに書いて、おもむろに「実行」ボタンをクリックします。下のコンソールに結果が表示されましたね?表示されなかった人は、コードが間違っていないか、これまでの人生に誤りは無かったか確認してください。
セミコロン(;)の行はコメント行です。私のDrScheme on Macでは日本語が入力できなかったので、笑って済ませました。ところで、helloの後ろのlって何?これは、lambda記法(ラムダ記法)のlです。ということは、他の記法があるの?あるんです。
; hello-m関数を書く (define (hello-m) "Hello, work!") ; hello-m関数を実行 (hello-m)
これは、MIT記法です。省略したカンジですね。lambda記法とMIT記法。どちらが一般的に使われるのでしょうか。9LISPではどちらかに統一した方がいいと思いますが、どうですか?
今度は、引数をとる関数を書いてみます。
(define sum-l (lambda (a b) (+ a b))) (sum-l 1 2)
aとbという引数をとって、aとbを合計しています。ちゃんと動きましたか?動かなかった人は、矢田亜希子と八田亜矢子を間違っていないか確認してください。上のコードは、lambda記法。MIT記法だと。。
(define (sum-m a b) (+ a b)) (sum-m 1 2)
カンタンですね。よかったですね。私はドロリッチを冷蔵庫に冷やしているのを忘れてて、カントリーマアムを食べてしまいました。ですから、Schemeで関数を定義するモチベーションなんて持ち合わせておりませぬ。ええ。持ち合わせてなどおりませぬとも。。。I'm not motivated to define a function of Scheme.