thanks for the 'findall' explanation! So it is indeed similar to 'solve'
in some aspects.
> But another thing is, when I do this
> (solve '(@L (list 'a 'b 'c) (append @X @Y @L)) @X)
> It will return all @X that took part on all solutions. Now I ask
> myself, what kind of "Prg" is a @X?
Like any other executable list of s-expressions. If you have a function
(de foo (X)
the 'prg' body is just (X). When an s-expr is a number, it is returned
as it is, if it is a symbol, its value is returned, and if it is a list
it will be taken as a function call.
So in the above example, the 'prg' body contains only of a single
symbol. Thus, the current value of '@X' (as bound by 'solve') is handed
back to 'solve', which collects it into the result list.