libera/#commonlisp - IRC Chatlog
Search
3:06:20
beach
I don't have the paper fresh in memory, but as I recall, each invocation takes a logarithmic amount of stack space. It would appear to me then, that a quadratic algorithms would take logĀ² space.
3:34:09
beach
I added two more papers to http://metamodular.com/SICL today, namely "A modern implementation of the LOOP macro", and "Removing redundant tests by replicating control paths."
13:33:43
pjb
It' strange that compiler-macro-function takes an environment parameter, but it can only be NIL for (setf compiler-macro-function).
13:38:07
Bike
compiler-macro-function needs it because compiler macros can be shadowed by local functions
13:38:22
Bike
but also, typep and subtypep and find-class take environment parameters, and there's no concept of local types
13:39:44
beach
Can those just be different global environments, like the ones mentioned for file compilation?
13:43:47
beach
So it looks like DEFTYPE can be defined in the compilation environment, so the environment to TYPEP and SUBTYPEP could be a compilation environment.
13:45:15
jackdaniel
could it be that find-class when used with compilation environment yields a forward referenced class instance standing for a class that is defined in this compilation unit?
13:52:49
pjb
Bike: oh I see, so with a lexical environment compiler-macro-function could return NIL because its (global) function is shadowed.
13:53:28
pjb
The magic of a specification: if you use it to implement something, it works even if you don't understand it! :-)
14:01:36
beach
So does that mean that DEFCLASS always defines the class in the evaluation environment?
14:01:37
jackdaniel
fwiw mcclim does a funny thing: it records presentations at compile time and tries to attach them to functions at run time (because as you have noted it may be a different class by then :)
14:03:30
Bike
what clasp does now is note any accessors in a similar way to what it does for defuns, and then sets an internal "class-info" in the environment, which covers the stuff where later sub/typep calls need to recognize it as a type, etc
14:05:14
beach
An environment parameter of a macro is always going to be the compilation environment, and the compilation environment inherits from the evaluation environment.
14:05:35
beach
So if the class is defined in the evaluation environment, that makes the phrase in the Common Lisp HyperSpec make sense.
14:06:14
beach
But my hypothesis is that the wording of the Common Lisp HyperSpec means that it always is.