Got it! ... thank you so much Alex! The (X Y . Z) and the @ scenarios fill the gap in my understanding! Regards, Kashyap
On Wed, Oct 13, 2021 at 7:11 AM Alexander Burger <a...@software-lab.de> wrote: > Hi Kashyap, > > > I was going over the evExpr functions in miniPicoLisp/PicoLisp 32 and > had a > > couple of questions - > > > > If I understand correctly - if (isNil(y)) block deals with expressions > such > > as > > (F 1 2) where F => (de F (X Y) (+ X Y)) and the else if (y != At) block > > deals with the scenario where F => (de F X (for I X (prinl I))) . > > Correct, but the latter deals also with > > (de F (A B C . X) ... > > because A, B and C are eaten up by the while (isCell(y)) above. > > > > My questions are as follows - > > > > 1. Why do we have this block of code? It seems to evaluate the args which > > is only used in the if(isNil(y)) block. > > > No, it does not evaluate. Evaluation took place already in the loop above