Я новичок в англиканском, вероятностном языке программирования в Clojure.Я пытаюсь использовать вложенную конструкцию let в Clojure.
Следующая defquery
работает без проблем.
(defquery panda3 [p1]
(let [p2 (sample
(categorical
{:speA (/ 1 2),
:speB (/ 1 2)}))]
(if (= p2 :speA)
( let [p3 (sample
(categorical
{:twins (/ 1 10),
:notwins (/ 9 10)}))]
)
( let [p3 (sample
(categorical
{:twins (/ 2 10),
:notwins (/ 8 10)}))]
))
p2))
Однако вместо того, чтобы возвращать значение p2
в конце, если я пытаюсь вернуть значение p3
, он возвращает ошибки.
(defquery panda3 [p1]
(let [p2 (sample
(categorical
{:speA (/ 1 2),
:speB (/ 1 2)}))]
(if (= p2 :speA)
( let [p3 (sample
(categorical
{:twins (/ 1 10),
:notwins (/ 9 10)}))]
)
( let [p3 (sample
(categorical
{:twins (/ 2 10),
:notwins (/ 8 10)}))]
))
p3))
Идея состоит в том, чтобы назначить p3 на основе результата p2.Однако я не могу этого сделать.Что я делаю неправильно?
Заранее спасибо,