Проблема в вашем определении partial-or-fill-at?
. Если я пытаюсь простое определение partial-or-fill-at?
в качестве функции, все работает:
(defn partial-or-fill-at? [price] (> price 100))
(defn partial-or-fill-at-test? [price]
(if (partial-or-fill-at? price) true (do (println "WRONG PRICE") false)))
user=> (partial-or-fill-at-test? 200)
true
user=> (partial-or-fill-at-test? 50)
WRONG PRICE
false
Сообщение об ошибке java.lang.Boolean cannot be cast to clojure.lang.IFn
означает, что где-то, у вас есть логическое значение (true
или false
), который пытается использовать в качестве a IFn
(имя функции Clojure для функции).
В вашем коде используются литералы true
и false
, а не как функции, поэтому это не проблема. Единственное место, где логическое значение можно использовать как функцию, - partial-or-fill-at?
. Если вы определили его с логическим значением, используя def
вместо defn
, вы получите эту ошибку. Например, возможно, вы случайно написал:
; earlier in the code
(def price 500)
; …
(def partial-or-fill-at? (> price 100))
, когда вы имели в виду это:
(defn partial-or-fill-at? [price] (> price 100))
Проверьте ваше определение partial-or-fill-at?
- также убедившись, что все Скобки баланс и что определение охватывает раздел кода вы ожидаете этого - и выясните, как изменить его значение с булева на функцию.
Cn вы вставляете код для 'partial-or-fill-at'? В противном случае невозможно понять, что случилось. –
@DiegoBasch Я отправил письмо по электронной почте и связал их с этим вопросом; только они имеют код. @Andrews, если вам нужна помощь в поиске проблемы в 'partial-or-fill-at?', Тогда, пожалуйста, отредактируйте этот вопрос, чтобы включить код для этой функции. –