Hi Bruno, > I'm going through the picolisp application development tutorial ( > http://software-lab.de/doc/app.html#tags) and I'm trying this piece of code > at the tags section: > > : (<div> 'main > (<h1> NIL "Head") > (<p> NIL > (<br> "Line 1") > "Line" > (<nbsp>) > (+ 1 1) ) ) > <div class="main"><h1>Head</h1> > <p>Line 1<br/> > Line </p> > </div> > > That is, the (+ 1 1) part is not evaluated.
In fact it *is* evaluated, but it does not print anything. All those HTML functions are *print* front-ends, which send text to the current output channel. : (<h1> NIL "Head") <h1>Head</h1> is nothing more than : (prinl "<h1>Head</h1>") <h1>Head</h1> just in a more convenient form. The nice thing is that these functions may be nested, as can be seen in your example (<div> 'main (<h1> NIL "Head") ..). Still they must print somewhere at the bottom. So the answer to your question is to write (ht:Prin (+ 1 1)) or just (prin (+ 1 1)) ('ht:Prin' is recommended for textual data which may contain HTML meta characters to properly escape them) Note that - for convenience - *atomic* expressions (like "Head" or "Line" in your example) are printed directly, so that it is not necessary to write (<h1> NIL (prin "Head")) # Not needed This is also mentioned in doc/app.html as • If an argument is an atom (a number or a symbol (string)), its value is printed immediately. • Otherwise (a list), it is evaluated as a Lisp function (typically some form of print statement). ♪♫ Alex -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe