Alex, thanks a lot for your very clarifier reply (specially the procedural
way of thinking which makes a lot of sense to me), I'm still confusing in a
couple of things...
I've read in docs that the ' prefix in a name of formal parameter when
describing a funcion indicates it's a evaluated parameter (even when the
opposite is clearer to me , using ' to indicate a non-evaluated parameter
following the quote notation you use when want to preserve something from
evaluation) but when describing functions ' is a notation mark with a
semantic, what is the semantic of dot notation mark when used in formal
parameters in function description?
I mean, you have these two notations for functions:
- (dbs+ 'num . lst)
- (delete 'any 'lst) -> lst
are they applied the same? with the same kind of parameters?
I mean, if I describe the function F as being:
- (F 'num lst) -> num
am I saying the same as if I describe it this way?:
- (F 'num . lst) -> num
if not, what is the difference?
> and what means the following notation?
> > - (dbs . lst)
> This notation is meant to represent a function like
> (de dbs Lst ..)
> so that a call
> (dbs a b c d)
> binds (a b c d) to 'Lst'.
> (dbs a b c d) = (dbs . (a b c d))
So I suppose the notation (dbs+ 'num . lst) refers to a function defined as
(de dbs+ X . Z ...) and thus first parameter is binded to X and also must
evaluate to a number and rest of parameters will be bound to Z, so you call
this function like (dbs+ 4 a b c) , what notation will you use to express
you have to pass a list as parameter to a function? maybe (dbs+ 'lst) ? I
mean a notation to express you *must* call a function using a list like (f
(a b c)) and not (f a b c)
Also taking about dot, as you said you have to use delimiters to separate
symbols and thus you must surround dot with spaces (or any other delimiter
I suppose, probably you can write the weird sentence (a,.,b) as an
alternative to (a . b) dotted pair), so I suppose dot is kind of operator
(maybe a read macro as ' ?) anyway I think it would be interesting if dot
could act as an operator being associative to the right, so you can write:
( a . b . c . d . NIL)
to be equal to
(a . (b . (c . (d . NIL))))
and also equal to (a b c d)
does it have any sense?