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:[email protected]?subject=Unsubscribe