📝Clojure Syntax からメモを移植. up: 📂Clojure Core Languages

Clojureフォームとは

Clojureの構成要素にいろいろ種類がある. Clojureではとくに フォーム という.

  • symbol
    • Clojureの世界での表現されるものはシンボルといってもいい.
    • 関数: foo, bar
    • Javaクラス
    • 名前空間 : user/foo
    • 演算子: +, -
    • etc…
  • number: 📝Clojure Number
    • 1
  • string: 📝Clojure String
    • “hoge”
  • keyword
    • :hoge
  • character
    • \h
  • boolean: 📝Clojure Logics
    • true/false/nil
  • list
    • (1 2 3)

Clojureフォーム間の変換

string->number: 文字列から数値への変換

Javaの関数を利用する. (int x)みたいなNativeなClojure関数がないことはハマリポイントだったり.

(Integer. "1")
(Integer/parseInt "2")
(Long/parseLong "1666956310000")

updated: read-stringならIntegerもDoubleも両方いける.

keyword->string: キーワードから文字列への変換

name を使う.

(name :hoge)
;;=> "hoge"

strをつかっても :hogeは”:hoge”に変換されてしまう, 注意💡

Clojure: 特殊形式 | Special Forms

Clojureの特殊形式は, Clojureの評価戦略に従わずコンパイラが直接解釈するSyntax.

つまり開発者がマクロで改変できないし, 逆にいればこれらはマクロの素材になる.

refs: clojure.org - Special Forms 🔖Evaluation Strategy

フォームTopics

Active Recalls

Clojureの特殊形式とはなんですか?また具体例はなんですか?

Clojureのコンパイラが独自に解釈するルール.

Spetial Formsともいう. def, if, let, fnなど.

Clojure の グローバル変数への束縛とローカル変数の束縛をするSyntaxは?

それぞれ,def, let.