[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

More On Naive T Design Question 6



Sorry, I didn't think the keyword problem out very well in reguards to using
environments.  The following works, but is ugly:

(define (read-keyword port ch rt)
  (let ((keyword (read-atom port rt ch)))
    (*lset standard-env `(quote ,keyword) `(quote ,keyword))))

Though I've never used an environment that isn't under standard-env one
would want to be able too do this and still have keywords work.   If I were
just interested in implementing Common Lisp in T, I might do the following:

				root
				 |
	    +--------------+-----+------+---------------+
	    |		   |		|		|
      standard-env implementation-env orbit ... cl-standard-env
	    |						|
     +------+--------+					|
     |               |					|
  user-env   cl-implementation-env		 keyword-package
							|
						 +------+-------+
						 |              |
					  user-package   other-packages

But for use in T, one would need a keyword-env that is parent to all
environments of interest.  But is the *lset really neccesary?  And, if so,
is it better to check and then set or always set?

Thanks, JJHunt

P.S. For the Common LISP implementation, one would want to have several
environments for each package: <name>-function-env, <name>-value-env,
<name>-function-export-env, <name>-value-export-env, etc.  The export
environments are needed for distinguishing between package:value and
package::value syntax.