Во-первых, вы можете упростить C++ до одного блока, если вашему комментарию поверят.
Итак, давайте сначала упростим на C++, не так ли?
if(some_condition_satisfied(g)) {
a = eval(g); // never returns zero, right?
// so we roll the next if block into this one
do_something();
}
В clojure я бы попробовал
(if (some_condition_satisfied g)
(let [a (eval g)]
(do_something)))
Обратите внимание, что я устанавливаю a, но не использую его. Это то, что вы имели в виду? В противном случае передайте его в do_something или измените условие if
(if (and (some_condition_satisfied g) (not= 0 (eval g)))
(do_something))
Это будет соответствовать коду C++ для
if ( some_condition_satisfied(g) && 0 != eval(g) ){
do_something();
}
Кроме того, мой clojure заржавел, но я уверен, что проверил синтаксис.
person
Ball
schedule
09.12.2009