Page 1 of 1

How to make if run one time each?

Posted: Sun Dec 29, 2013 1:12 pm
by dexter
just say

Code: Select all

(setq test 0)
(if (= test 0) (begin (println test) (++ test)) (= test 1) (begin (println test)))
and this output as :

Code: Select all

> (if (= test 0) (begin (println test) (++ test)) (= test 1) (begin (println test)))
0
1
Is it different to C ?
Cause I thought (if ) only run once, so the output should be one line , a 0

new lisp can not do it ?

Re: How to make if run one time each?

Posted: Sun Dec 29, 2013 3:29 pm
by HPW

Code: Select all

(silent(setq test 0))
(silent(if (= test 0) (begin (println test) (++ test)) (= test 1) (begin (println test))))
The 1 you see is the return value.

Re: How to make if run one time each?

Posted: Tue Dec 31, 2013 5:29 am
by dexter
Thanks

I never noticed (silent)