Clojure を学ぶ 公式サイト編1
以前、ちょっとだけかじった事があった Clojure を、もういっかい勉強中。
公式な日本語ドキュメントもあるけど、英語の勉強もかねて自分なりにまとめていきます。
https://japan-clojurians.github.io/clojure-site-ja/guides/learn/syntax
環境

公式でも紹介されている、オンライン開発環境のrepl.itを使います。
https://repl.it/languages/clojure
clojure.replをrequireすると、doc関数などが使えるようになります。
(require '[clojure.repl :refer :all])
(doc println) ; println関数のドキュメントを表示
(apropos "trim") ; trimを含む関数名を列挙
(find-doc "trim") ; trimを含むドキュメントを列挙
(dir clojure.repl); clojure.repl名前空間の関数の一覧
(source dir) ; dir関数のソースを表示
リテラル
コメント
; ← 行末までコメント
; ↓ 複数行のコメント
(comment
…
)
(comment)は、リテラルではなく、引数を無視してnilを返す関数。 なので、囲まれた部分のカッコの整合性などは、キチンとしておく必要があるみたいです。
数値
42 ; 整数
-1.5 ; 浮動小数点
22/7 ; 分数
011 ; 9 プレフィックス「0」で8進数
0x11 ; 17 プレフィックス「0x」で16進数
8r11 ; 9 プレフィックス「Nr」でN進数
16r11 ; 17
2r11 ; 3
##Inf ;特別なシンボリック値 正の無限大
##-Inf ;特別なシンボリック値 負の無限大
##NaN ;特別なシンボリック値 「数値ではない」
無限大とかを使う機会はあまりなさそう。Repl.itでは、##inf を入力すると、「 EOF while reading 」エラーが返ってきました。
文字型
"hello" ; 文字列
\e ; 文字
#"[0-9]+" ; 正規表現
\newline ; 特殊文字
\space
\tab
など
\uNNNN ;Unicode文字
\oNNN ;Unicode文字8進数
文字は、「 \あ」などの2バイト文字も使えるようです。
\u0041、\o101で、"\A"が返ってきます。
シンボルと識別子
map ; シンボル
+ ; シンボル
clojure.core/+ ; 名前空間付きシンボル
nil ; 特別なシンボル null値
true false ; 特別なシンボル 真偽値
:alpha ; キーワード
:release/alpha ; 名前空間付きキーワード
キーワードは常にそれ自身に評価されるシンボル。
nil、true、false も自身が返ってくるようです。
コレクション型
'(1 2 3) ; リスト 順序付けあり、重複あり、インデックスなし
[1 2 3] ; ベクター 順序付けあり、重複あり、インデックスあり
#{1 2 3} ; セット 順序付けなし、重複なし
{:a 1, :b 2} ; マップ
Clojure の基本
def
特殊形式 現在の名前空間で、シンボルを値に関連付ける
; 値を関連付け
(def x 5)
; 関数を関連付け
(def add (fn [a b] (+ a b)))
; doc-string あり
(def r "円の半径" 5)
(doc r)
>> user/r
>> 円の半径
>> nil
印字
改行あり/なし、人間が読める/機械が読めるの組み合わせで、4種類かある模様。
とりあえずは、改行ありで人間が読めるprintln、同じく機会が読めるprnを覚えておけば良さそう?
続く
ディスカッション
コメント一覧
まだ、コメントがありません