Hi Ana,

> 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
of lisp":

(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
   value.

(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:
      (cond
         ((condition1) (expr1) (expr2) ...)
         ((condition2) (expr3) (expr4) ...)
         ... )

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to