##はじめにleiningen環境においてセッション(計算機と利用者のやりとり)の例をみてみよう。
###1) 何も入力せず、enter
user=>
user=>
計算機からの応答はない。エラーは起きず正しくセッションが終了する。
###2) 数字を入力、return
user=> 87
87
user=>
入力した数字が表示される。
###3) 簡単な計算機(式の評価)
加法演算子+
user=> (+ 3 2)
5
除法演算子/
user=> (/ 3 2)
3/2
三角関数
user=> (Math/sin 3.14)
0.0015926529164868282
user=> (Math/sin 3.141592)
6.535897930762419E-7
user=> (Math/sin Math/PI)
1.2246467991473532E-16
##次に関数の構築、すなわちスクリプトについて記述する。
###1) square
user=> (defn square [x]
#_=> (* x x))
#'user/square
user=> (square 5)
25
###2) min
user=> (min 1 2 3 5)
1
minは定義済みの関数であることに注意。
###3) minimum (ユーザー定義)
user=> (defn minimum [x y]
#_=> (if (<= x y)
#_=> x
#_=> (y)))
#'user/minimum
この結果
user=> (minimum 2.5 4)
2.5
###4) 関数の組み立て
user=> (square (+ 3 4))
49
user=> (square (minimum 2 4))
4
4乗
user=> (defn quad [x] (square (square x)))
#'user/quad
user=> (quad 2)
16
###5) 円の面積
user=> (defn c_area [r] (* Math/PI r r))
#'user/c_area
user=> (c_area 2)
12.566370614359172
###6) カリー化
Clojureの場合は部分適用(partial)で代用する。
関数addを
add x y = x + y とすると、
(add x)はxを足す関数である。
user=> (defn add [x y] (+ x y))
#'user/add
user=> (def add1 (partial add 1))
#'user/add1
user=> (add1 10)
11