EDNとは

Extensible Data Notation.

Rich Hickey のかんがえたさいきょうのふぉーまっと(らしい, ref). そのためClojureプログラミング界隈ではではたいていEDN形式でファイルが保存される.

Rationale(必然的理由)の詳細はGitHubより.

ref. edn-format/edn: Extensible Data Notation - GitHub

Basic Usage

clojure.edn namespace の edn/read-stringを基本的にはつかって読み込み.

ref. edn(extensible data notation)を使う - Qiita

examples

(require '[clojure.edn :as edn])
 
(defn load-edn [file-path]
  (when-let [file (resource file-path)]
    (-> file
        slurp
        edn/read-string)))
 
(defn dump-edn! [file-path data]
  (let [save-data (with-out-str (pprint data))]
        (spit save-path file-data)))

💡EDN Insignts

hashmapの区切りにカンマはいるの?

EDNを出力するときにpprintとかで整形するとカンマがついている. これはClojureが読みやすさのためにREPL出力のときにつけてくれるものであるがClojureでは, はwhitespaceとして扱うので両者に違いはない.

ref. Clojure - Learn Clojure - Hashed Collections

気にしないほうがいい. ただカンマなしを見かけるほうが多い.

Datomicとの関係

EDNのシンタックスハイライト はどうする?

Clojureを指定すればいい.

ednファイルの命名の慣習は?

ednファイルはclojureで読めばそれはClojureのCollectionなのでその慣習に従うのがよさそう. hashmapなら単数, vectorなら複数など.