added lisp.c; moved from odd ~ location.
More lisp.c modifications...
More lisp.c modifications...
Moving over to Lisp lexical environment function passing in C functions. Oh goodie... infrastructure.
Added property lists to everything. Can you smell MEMORY USAGE?
Started working on packages
Started working on equality functions
Continuing... Beginning to wonder if I should have done function infrastructure first.
The home-stretch. Added function infrastructure, with no re-write needed. :) strtolstr. newvector, newbase_char confirmed to work.
Adding package functionality, variable lookup.
Environment infrastructure
Still struggling with the environment model. Packages are difficult to implement, though easy to visualize. Wretched ANSI, forcing me to implement lexical *and* dynamic scope. It's enough to drive one mad. Added procinfo structure. This'll be the first thing pointed to by the environment list. It holds a list of all packages defined for the lisp process. Environment objects are lexical only; dynamic variables are kept in the current package's global environment list. One day, the dynamic environments will use hash tables. For now, I'll be content to walk before I fly. Now I need to decide where I'll store what, and mirror the appropriate change into my evaluation functions.
It compiles; bugs to be found in fintern. Not interning?
Refactoring of fintern code, and general tidying.
If the same symbol has previously been interned, fintern will now return the previous definition, instead of a new one.
More tidying, whilst listening to Pink Floyd. Time to expand my musical horizons.
More tidyig; symbol values are now CONSes, so we can make value stacks. Still not certain how I'm going to manage dynamic variable binding/unbinding. :/
Symbol values are no longer CONSes. I wish dynamic variables didn't exist. In the meantime, I'm not going to make my life harder by accomodating them.
Changed all functions back to C calling convention, and wrote wrappers (in lbind.c) to enable Lisp calling convention.
Actually ADDED the files that I was telling you about before. :/