関数を定義してみます。

おとうさんスイッチ。おじいじゃんも可。いきますよぉー。

  • おとうさんスイッチ「ら」
  • おとうさんスイッチ「り」
    • 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.