> thank you for your patience in answering. will study this one piece at
> a time and get back with more questions. :)
OK, any time :)
BTW, we looked at your page http://nybl.info/doku.php?id=picolisppage
and stumbled across some incorrectnesses in "seven primitive functions
(quote a) means 'do not evaluate a '
In case of PicoLisp, this measn "do not evaluate (a)". If you want to
quote the symbol 'a', you must write (quote . a) or 'a
(eq 'a 'b) checks for equality of the atoms
'eq' does not exist in PicoLisp. The equivalent function is '=='.
Both 'eq' in other Lisps, and '==' in PicoLisp, do _not_ necessarily
check the equality of atoms, but of any data type. The point is that
the check is for pointer-equivalence (as opposed to '=' in PicoLisp
(or 'equal' in other Lisps), which checks for structure-equality).
car and cdr both expect lists
This is correct for other Lisps. In addition, PicoLisp allows 'car'
to be applied to a symbol. In that case it returns the symbol's
(cons x y) expects y to be a list. creates a list out of the two
'y' does not need to be a list (in any Lisp I know). Both 'x' and 'y'
can be arbitrary data, and 'cons' doesn't create a list of them but a
"cons pair": (cons 3 4) -> (3 . 4)
(cond (if1 func1)…) looks for an if_n that's true and gladly executes func_n
This is correct, but a bit misleading. The body of a 'cond' clause is
not a function, but a list of expressions:
((condition1) (expr1) (expr2) ...)
((condition2) (expr3) (expr4) ...)