これまで、list, +, *, -, /, quote などを使った式の書き方を学んできました。

今日は、独自の操作を定義する方法を学びます。

操作には 2 種類あります。

  1. 関数
  2. マクロ

この章では、関数を学びます。

Birthday

なぜ関数が必要なのでしょうか?

例えば、あなたの年れいが何才なのかを日数で表すとします。簡単でしょう?あなたの年れいを年単位で計算し、それに 1 年の日数である 365 をかければいいのです。

あなたが 9 才なら、あなたの年れいは日数で言うと次のようになります。

(* 9 365)

そして、家に 1 才半の赤ちゃんがいる場合、その子が生きている日数は次の通りです。

(* 1.5 365)

この (* x 365) のようなものを毎回書くのはかなり面倒です。だから関数が必要なのです。

関数というのは、何にでも使える計算式のようなものです。

今回の計算では、年数 × 365 という計算式になります。

関数を定義する方法は?

ここでは、何日生きてきたかを計算のための関数を定義します。

#(* % 365)

関数の定義は次の 3 つでできています。

  1. ハッシュタグ(#)を前につける
  2. 式の挿入
  3. 式の中で、関数の引数として % を使う

注意: # と式の間には、空白を入れないでください。

式の場合と同じように、 def を使って関数に名前をつけることができます。

(def age-in-days #(* % 365))

そして、その関数はどんな数にでも使うことができます。

(age-in-days 9)
(age-in-days 1.5)

また、関数の名前を使わないことも可能です。これを無名(むめい)関数とよびます。

(#(* % 365) 12)

上のコードスニペットで何が起こっているのか、理解できましたか?

練習問題

A. 時間を分にかえる関数 hours->minutes を書いてください。

()

B. hours->minutes を使い、12 時間に何分あるのかを計算してください。

()

C. 名前を使わずに、A で定義した関数を 12 に使ってください。

()

D. 分を時間にかえる関数 minutes->hours を作成します。

()

E. minutes->hours を使って、6000 分間に何時間あるか計算します。

()

F. E で定義した関数を 6000 に使ってください(関数名は使用しないでください)。

()

Send us a screenshot with your programs to viebel@gmail.com.