Clojure 声明函数';作为原子的论据

Clojure 声明函数';作为原子的论据,clojure,Clojure,是否可以将函数的参数声明为原子 比如说, (defn make-withdraw [(atom balance)] (fn [amount] (if (>= @balance amount) (do (swap! balance #(- % amount)) @balance) "Insufficient funds") )) 谢谢大家! Clojure是一种动态类型的语言,因此参数是您传递给它的任何内容,在函数中如何使用它才是最重要的 因此,只需

是否可以将函数的参数声明为原子

比如说,

(defn make-withdraw [(atom balance)]
  (fn [amount]
    (if (>= @balance amount)
      (do (swap! balance #(- % amount)) @balance)
      "Insufficient funds")
  ))

谢谢大家!

Clojure是一种动态类型的语言,因此参数是您传递给它的任何内容,在函数中如何使用它才是最重要的

因此,只需向函数传递一个原子,您就可以开始:

(make-withdraw (atom 1000))
或者在您的
make draw
函数中使用
let
创建原子:

(defn make-withdraw
  [balance]
  (let [state (atom balance)]
    (fn [amount]
      (if (>= @state amount)
        (do (swap! state #(- % amount)) @state)
        "Insufficient funds"))))

Clojure是一种动态类型的语言,因此参数是您传递给它的任何内容,在函数中如何使用它才是最重要的

因此,只需向函数传递一个原子,您就可以开始:

(make-withdraw (atom 1000))
或者在您的
make draw
函数中使用
let
创建原子:

(defn make-withdraw
  [balance]
  (let [state (atom balance)]
    (fn [amount]
      (if (>= @state amount)
        (do (swap! state #(- % amount)) @state)
        "Insufficient funds"))))

Clojure是一种动态类型的语言,因此参数是您传递给它的任何内容,在函数中如何使用它才是最重要的

因此,只需向函数传递一个原子,您就可以开始:

(make-withdraw (atom 1000))
或者在您的
make draw
函数中使用
let
创建原子:

(defn make-withdraw
  [balance]
  (let [state (atom balance)]
    (fn [amount]
      (if (>= @state amount)
        (do (swap! state #(- % amount)) @state)
        "Insufficient funds"))))

Clojure是一种动态类型的语言,因此参数是您传递给它的任何内容,在函数中如何使用它才是最重要的

因此,只需向函数传递一个原子,您就可以开始:

(make-withdraw (atom 1000))
或者在您的
make draw
函数中使用
let
创建原子:

(defn make-withdraw
  [balance]
  (let [state (atom balance)]
    (fn [amount]
      (if (>= @state amount)
        (do (swap! state #(- % amount)) @state)
        "Insufficient funds"))))