Hi Christophe,

> >> : (T (== 1 1) T)
> >> !? (T (== 1 1) T)
> >> T -- Undefined
> 
> Hi Alex, I'm not sure that you understood Dean's question.
> Or maybe I didn't understand your answer.

Not sure. I hope I didn't misunderstand ;)


> What Dean did:
> To understand your definition of mmbr, Dean extracted this line:
> (T (== 1 1) T)
> from the «for». Bad luck, the «for» function is what is called in some lisps
> a «special form»: its arguments are not evaluated.
> I think that in picoLisp it's called an f-expression.

Right. An "FEXPR function", to be exact.

However, the expressions in the *body* of 'loop', 'for' and other flow
functions are normal s-expressions evaluated the normal way, one after
the other, *but* with special handling if the CAR is T or NIL (exit
conditions).


> and done «manually».
> 
> Some examples in picoLisp:
> 
> : (de f (x) x)  # could have been defined with setq or set

Side note, Please don't forget upper case here! (de f (X) X)



> The «for» function kind of inspects its args to find «clauses»
> and treat them specially, not as usual function calls.
> That's why brutally extracting them from
> the «for» construct doesn't work.

Exactly.


> An example of this kind is the «let» construct:
> 
> : (let (X "Hello" Y "world") (prinl X " " Y))
> Hello world
> Here X is not a function but a symbol to which "Hello" is bound.

Yes, 'let' is good example.

In summary: As data and code are equivalent, it depends on the context
what it is.

♪♫ Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to