(def user-home-path (System/getProperty "user.home")) (defn get-canonical-path [^String path] {:pre [path]} (-> (cond-> path (.startsWith path "~") (.replaceFirst "~" user-home-path)) java.io.File. .getCanonicalPath)) ClojureというかJavaの仕様ですが、FileクラスのgetAbsolutePathは相対パス指定 . や .. を展開してくれません。代わりにメソッド getCanonicalPath を使います。 しかし、このメソッドもユーザーホームを表す ~ は正規化してくれませんのでこれに対応するには System Property から取得したユーザーホームパス

