2011/6/1 Vladimir Sedach vsedach@gmail.com:
Note the ps:ps* there. ps:ps is itself a macro that translates PS code to JS at macro-expansion (compile) time, but in this example *expand-conditional-splice?* gets bound at run-time. You can use ps:ps, but then you have to be careful to set the value of *expand-conditional-splice?* correctly before your code gets compiled.
This might seem confusing at first, but the key thing is to learn what happens at compile-time, and what happens at run-time. On Lisp has a really good introduction to macros and how to think about them: http://www.paulgraham.com/onlisp.html
Thank you, it is much clearer now!
So, I'll have to rework my code to see where I can put ps:ps and where ps:ps*, because I'd prefer most of the code macro-expanded at compile time. I'm going currentyl through several lisp books, and I have decided to leave the onlisp for later when I get an better grasp on things, because when I first started with it, it became too advanced very fast for one that had no previous experience with lisp.