小编use*_*464的帖子

前缀列表中的lib名称不得包含句点

我现在正在学习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但得到同样的错误.

lisp clojure read-eval-print-loop

7
推荐指数
1
解决办法
3682
查看次数

如何使用defmacro简化一些代码

我写了两个像这样的函数,但是你看到它们中的大多数都是相同的,所以我想编写一个宏来简化它们.

我理解教科书中的简单宏示例,但我不知道如何编写自己的.

这是我的代码:

 (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)

lisp macros clojure

1
推荐指数
1
解决办法
151
查看次数

标签 统计

clojure ×2

lisp ×2

macros ×1

read-eval-print-loop ×1