我现在正在学习clojure,我写了这样一个文件:
;; File ./mycode/myvoc.clj
(ns mycode.myvoc
(:use 'clojure.java.io)
(:import (java.io.File)))
; more code here...
Run Code Online (Sandbox Code Playgroud)
这个文件驻留在./mycode/,当我运行REPL时,我想使用该函数myvoc.clj,如下所示:
user=> (use 'mycode.myvoc)
java.lang.Exception: lib names inside prefix lists must not contain periods (myv
oc.clj:1)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么.如果我改为myvoc.clj:
(ns mycode.myvoc)
; (:use 'clojure.java.io)
; (:import (java.io.File)))
Run Code Online (Sandbox Code Playgroud)
它会没问题但只是报告没有"读者在这种情况下",因为我评论了导入部分.
有人可以解决这个问题吗?我也使用require但得到同样的错误.
我写了两个像这样的函数,但是你看到它们中的大多数都是相同的,所以我想编写一个宏来简化它们.
我理解教科书中的简单宏示例,但我不知道如何编写自己的.
这是我的代码:
(defn load-dict
; "Load database from a txt file previous saved"
[fname]
(with-open [rdr (io/reader fname)]
(doseq [line (line-seq rdr)]
(println line)
(def vvv (clojure.string/split line #"\s"))
;(println (str "count of vvv is " (count vvv)))
(if (< 1 (count vvv))
(add- dict (gen-word (nth vvv 0) (nth vvv 2) (nth vvv 1))))
)))
(defn load-article
; "Load article from a txt file"
[fname]
(with-open [rdr (io/reader fname)]
(doseq [line (line-seq rdr)]
(println line)
(def vvv (clojure.string/split …Run Code Online (Sandbox Code Playgroud)