Я пишу на простую программу для преобразования значений двух целых чисел, используя STM Clojure.Я следую за приближением Левандовски (http://lewandowski.io/2016/01/clojure-summary/),, используя его функцию a06.
Мой код:
(defn trans [p1 p2]
(println "a")
(dosync
(let [newval1 (@p1 + 50)
newval2 (@p2 - 30)]
(do
(println "b")
(ref-set p1 newval1)
(ref-set p2 newval2)))))
(defn main []
(let [p1 (ref 20) p2 (ref 100)]
(do
(future (trans p1 p2))
(future (trans p1 p2))
(Thread/sleep 500))
(println @p1)
(println @p2)))
По какой-то причине моя функция main не попадает в "сделать часть "функции trans. Следовательно, мой вывод только:
a
a
20
100
=> nil
Я добавил" a "и" b ", чтобы показать мою проблему. Извините, если это очень простая ошибка, которую я сделал, ноЯ просто не вижу, чего не хватает в моем коде. Каждый ответ очень ценится! Спасибо!