java.lang.Double无法强制转换为clojure.lang.IFn问题

时间:2016-09-20 21:53:51

标签: java clojure

我正在为一个赋值编码一个基本的指数函数,我无法弄清楚为什么我会收到这个错误。这是我的代码:

(def epsilon 0.000001)

(def exponentialing
  (fn [F S T x]
    (if
      (<= T epsilon)
      S
      (recur (+ F 1) (+ S T) (* T(/ x F)) x))))


(def exp
  (fn [x]
    (exponentialing 1.0 0.0 1.0 x)))

我在最后一行收到错误信息,我假设它与参数点中的双打或x有关

1 个答案:

答案 0 :(得分:0)

您似乎错过了recur行中的空格字符。我还将您的功能从def简化为defn。此外,您未能在原始版本中调用exp

(ns clj.core
  (:require [tupelo.core :as t] ))
(t/refer-tupelo)

(def epsilon 0.000001)

(defn exponentialing
  [F S T x]
  (if
    (<= T epsilon)
    S
    (recur (+ F 1) (+ S T) (* T (/ x F)) x)))

(defn exp 
  [x]
  (exponentialing 1.0 0.0 1.0 x))

(spyx (exp 3))

 > lein run
(exp 3) => 20.085536488379084