LoginSignup
1
1

More than 5 years have passed since last update.

Clojure 基本的な操作

Last updated at Posted at 2018-07-03

はじめに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
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1