Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops clojure.lang.Lazysez不能被转换为clojure.lang.IFn_Loops_Clojure_Sequence - Fatal编程技术网

Loops clojure.lang.Lazysez不能被转换为clojure.lang.IFn

Loops clojure.lang.Lazysez不能被转换为clojure.lang.IFn,loops,clojure,sequence,Loops,Clojure,Sequence,嘿,我正在搜索一个8个谜题,我有两个主要问题 修正:首先我得到clojure.lang.Lazysez不能被转换成clojure.lang.IFn,当我在for循环中的变形的第二部分运行它时,但我不确定为什么 这是我的密码: (defn a-star ([board history] (if (at-end? board) (println board) ( (let [options (filter #(possible-move? % boa

嘿,我正在搜索一个8个谜题,我有两个主要问题

修正:首先我得到clojure.lang.Lazysez不能被转换成clojure.lang.IFn,当我在for循环中的变形的第二部分运行它时,但我不确定为什么

这是我的密码:

(defn a-star

  ([board history]

     (if  (at-end? board) (println board)
    (

          (let [options (filter #(possible-move? % board) *moves*)
                move (into (pm/priority-map) (for [move options] [move (global-man-dis       (move-tile board move))]))]

              (for [pair move :let [next-move (key pair)]] 

                 (do 
                  (println (move-tile board next-move))
                  (a-star (move-tile board next-move) next-move (conj history board))
                 )
              )
          )
    )))



  ([board prev-move history]

     (if (or (at-end? board) (history-check history board)) (println board)
    (

      (let [options (get-queue board (dont-go-back prev-move))
            move (into (pm/priority-map) (for [move options] [move (global-man-dis     (move-tile board move))]))]

        (for [pair move :let [next-move (key pair)]] 

           (do 
            (println (move-tile board next-move))
            (a-star (move-tile board next-move) next-move (conj history board))
           )
         )
       )
     ))))



(defn -main [& args]
  (println "insert a list all numbers no spaces or letters")
  (def board (mapv (fn [^Character c] (Character/digit c 10)) (read-line)))
  ;(def testt [0 8 4 7 2 1 3 5 6])
  ;(def testt [1 2 3 5 4 6 8 0 7])
  (a-star board [])
  )
从post开始尝试:删除let语句周围的“else”参数,但现在不返回任何结果
修正了删除了else括号,并将改为doseq,因为在这种情况下,for是懒惰的,不会输出任何内容。我再单独问另一个问题

在a星返回序列中的一些基本情况。因为let语句周围有一对额外的paren,所以您将a-star的输出作为函数调用。

我有点搞不清楚哪些额外的paren?我试图删除整个let中的“else”参数,但它现在什么也不返回。请看repl中以下内容之间的区别:
(let[a(constanced true)]a)
((let[a(constanced true)]a))
-一个返回函数,另一个返回true。不返回任何内容意味着返回nil吗?如果是这样的话,那很可能是因为print语句返回nil,然后用print语句结束分支。现在它可以工作了,问题是for循环是惰性的。之前它什么也没印。我把它改成了doseq,现在它很好。我决定把这件事说清楚,然后把我的另一个问题放到另一个帖子里