Clojure Leiningen その2

ディレクトリレイアウト

ファイル名から名前空間へのマッピング規則

src/
└── temp/
    └── core.clj

1 directory, 1 file
  • これは単一セグメント(上記の場合、tempの直下)の名前空間は推奨されないからであると。
  • 情報のソースを辿ってみましたが、どうやらJavaとの相互運用性に関する問題があり、単一セグメントの名前空間を使用するとJavaのデフォルトパッケージにClojureのコードが置かれてしまうので、やめましょう。という慣習のようです。
  • その慣習に則って、leinではプロジェクト名の後ろにcoreをつけた名前空間を作成する、ってことかと。
  • ちなみに、core.cljの中身はこんな感じ。
(ns temp.core)

(defn foo
  "I don't do a whole lot."
  [x]
  (println x "Hello, World!"))
  • temp.core という名前空間になっています。
  • また、Clojure名前空間- は実際のパスの場合 _ と書き換える必要があります。
  • これもまたJavaの影響を受けていて、Javaの場合、パッケージ名とクラス名でダッシュが使えないから、とのこと。

Javaが識別子、特にパッケージとクラス名でダッシュを禁止しているという事実によるものです。 https://codeberg.org/leiningen/leiningen/src/branch/stable/doc/TUTORIAL.md#filename-to-namespace-mapping-convention