clojure備忘録[clojureの基本的な関数 その4(=関数)]

atomは存在が確認できなかったのでclojureの基本関数としてはこれが最後です。
値が等しいか等しくないかを返却する関数です。

表記

(= form0 form1)

引数を2つとり、両者の「S式の構成も含めて」、「値」が同じであれば論理値のtrueを、
同じでなければfalseを返却します。
上記の説明は実例を見た方が早いでしょう。
論理値の表記はtrueとfalseです。(後のエントリで正式に掲載します。)

実例

まずは単純なアトムから。

user=> (= 1 1)
true
user=> (= 1 2)
false
user=> 

ま、問題無いでしょう。次も問題ないと思います。
(「=」は関数なので、引数のS式を計算した結果を扱うことが分かれば。)

user=> (= (+ 3 4) (- 10 3))
true
user=> (= (+ 3 4) (- 10 2))
false
user=> 


次はリストを比較してみます。

user=> (= '(a b (c d)) '(a b (c d)))
true
user=> (= '(a b (c d)) '(a b (C d)))
false
user=> (= '(a b (c d)) '(a (b c d)))
false
user=> 

1番目は、第1引数も第2引数もまったく同じ構成、値になっているので真が返却されます。
2番目は、構成は同じですが、第1引数が小文字の「c」で、
第2引数が大文字の「C」になっているため、偽が返却されます。
3番目は、構成している要素は全て小文字の「a」〜「d」なのですが、
構成が異なる為、やはり偽が返却されます。