基本構文
3つの基本についてまとめていきます
- リテラル
- 関数の定義と呼び出し
- 特殊フォーム
今日は 1.リテラル についてまとめます
1. リテラル
数値型
42 ; Long
-1.5 ; Double
22/7 ; Ratio
;を書くことでコメントを挿入することができます。
通常、整数は Long 型として扱われますが、
Nサフィックスをつけることで BigInt 型として扱うことができます。
(+ 9223372036854775807 1)
; Execution error (ArithmeticException) at java.lang.Math/addExact (Math.java:931).
; long overflow
9223372036854775807N
(+ 9223372036854775807N 1)
; 9223372036854775808N
同様に、少数は Double 型として扱われますが、
Mサフィックスをつけることで BigDecimal 型として扱うことができます。
(* 1.1 1.1)
; 1.2100000000000002
(* 1.1M 1.1M)
; 1.21M
文字型
- 文字列はダブルクォーテーション
"で囲まれて表現されます- "hello"
- 個々の文字はバックスラッシュ
\を先頭につけて表現されます- \e
- 改行やspace、tabなどには特殊な名前がついています
- \newline
- \space
- \tab
- Unicodeを直接指定することもできます
- \u3042
- 正規表現に関しては文字列の先頭に
#をつけることで表現できます。この文字列はJava.util.regex.Patternオブジェクトにコンパイルされます
"hello" ; string
\e ; character
\newline ; character
\u3042 ; character ; あ
#"[0-9]+" ; segular expression
シンボル
シンボルは、英字、数字、記号(一部除く)で構成され、
関数や値、名前空間などを参照するために使用されます
シンボルはオプションで名前空間を持つことができ、
スラッシュ / で区切られます
map ; symbol
clojure.core/+ ; namespaced symbol
nil ; null value
true false ; booleans
:alpha ; keyword
:release/alpha ; keyword と namespace
コレクション
Clojureには4つのコレクションタイプがあります。
- list
-
'()で囲みます - 順序付き
- indexではなく、
firstやrestで要素を取り出す
-
- vector
-
[]で囲みます - 順序付き
- indexされされていて、
get関数を使って、任意の要素を取得できる
-
- set
-
#{}で囲みます - 順序がない
- ユニークな要素の集合体
-
- map
-
{}で囲みます - キーとバリューのペアを格納する
- キーはユニークになる
-
'(1 2 3) ; list
[1 2 3] ; vector
#{1 2 3} ; set
{:a 1, :b 2} ; map
明日は2. 関数の定義と呼び出しについてまとめます
参考
