Super - got it. I am getting so excited as I inch towards "understanding" the whole thing!
On Sun, Feb 24, 2019 at 10:47 PM Alexander Burger <a...@software-lab.de> wrote: > Hi Kashyap, > > > I was trying to follow through what happens when I run (de f (x y) (+ x > y)) > > using printf debugging in minipicolisp. > > > > If I understand correctly, "de" is read in at io.c:385 if (x = > > isIntern(tail(y), > > Intern)) > > Correct. Here the symbol 'de' is read - and thus either found in the > internals, > or created as a new internal symbol (which will not happen here, as 'de' > is a > built-in symbol and exists always when the reader runs). > > > > However, what I am having some trouble understanding is - when does the > > mapping to doDe happen? > > The symbol 'de' has a pointer to the code doDe() in its value. > > > > I mean, when I look at evList and try to follow it > > - I notice that if (isNum(foo = val(foo))) is already true "de". Why was > > val(foo) is the function pointer. In case of Lisp-level functions (EXPRs > and > FEXPRs) this would be a list instead of a number. > > > > the value of "de" set to num type and when did it get set to the function > > that maps to doDe (flow.c:207). > > This is a bit tricky in miniPicoLisp. > > In "normal" PicoLisp the values for built-in symbols is set in > src64/glob.l:251 > > initFun NIL "de" doDe > > or in src/tab.c:98 > > {doDe, "de"}, > > But in mini the ROM contents are pre-built with gen3m.c, ending up as > encoded C > structures in rom.d > > ☺/ A!ex > > -- > UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe >