基本構文
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. 関数の定義と呼び出しについてまとめます
参考