ディレクトリレイアウト
- https://codeberg.org/leiningen/leiningen/src/branch/stable/doc/TUTORIAL.md#directory-layout
- デフォルトで作成されるディレクトリレイアウトの場合
src
とtest
が直下に存在してます。このレイアウトはMavenとは違いますね。
ファイル名から名前空間へのマッピング規則
- https://codeberg.org/leiningen/leiningen/src/branch/stable/doc/TUTORIAL.md#filename-to-namespace-mapping-convention
- まず、
src/temp
直下にファイルを置くのはよろしくないみたいです。 - 前回作ったディレクトリ構造は最初から
core
というディレクトリが作られていました。
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