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?