freenode/#lisp - IRC Chatlog
Search
5:00:40
gilberth
I believe the environment concept of CL is undervalued. I abused macros in my CLIM to implement presentation types in a way, that mere compilation of a file would not harm the current image.
5:01:43
beach
Interesting. For SICL, I definitely intend to make the compilation environment separate from the startup environment to avoid such side effects.
5:01:46
gilberth
As compilers, that I found, are careful about that, defining a macro in a file to be compiled does not make it to run time until loaded.
5:03:51
gilberth
I have a namespace concept. It should definitely be possible to spawn new name spaces which "behave".
5:05:55
gilberth
Macros do that in practice. My definition of FIND-PRESENTATION-TYPE essentially calls MACROEXPAND on a specially named symbol in the environment at hand. Which is a hack. But then SETF-functions are a hack too in all CL implementations, I know about.
5:09:35
gilberth
You could go lexical, if you want. I stick the definition of a meaning of a symbol in certain namespace to its macro expansion. Which is a hack. But it works well and manages to get the behavior, that compiling a file does no harm, given current compilers.
5:10:27
gilberth
The symbol then is named like (<namespace> <name>) Like e.g. |(PRESENTATION-TYPE FOO)| and that is the hack.
5:15:08
gilberth
Anyhow: My point is: It should be possible to spawn a new name space in "user" space, which behaves. Like for instance our presentation types. It is a pain in the a**.
5:15:54
beach
gilberth: It will be possible in SICL, as my paper on first-class global environments shows.
5:18:13
gilberth
It is even worse, because: I want to be able to rename packages and load multiple versions of a system. Then the scheme CL-USER::|(SETF FOO) would have been saner. If you ask me.
5:18:22
beach
I will need all that functionality anyway in Second Climacs. I need for every top-level form to be compiled in a "delta" environment that can be discarded without great cost.
5:19:09
beach
gilberth: It is straightforward to do with my first-class global environments protocol.
5:21:46
gilberth
CL is Lisp-n and still has poor support for that. I had quite some fun to get the presentation type stuff right by abusing macros.
5:22:44
beach
gilberth: The problem is not in Common Lisp itself. The problem is that current implementations take the easy way out.
5:23:15
Bike
well it's true the language doesn't have any convenient mechanism for adding to the environment.
5:24:03
gilberth
beach: I contradict. How would you span a new name space? So that it could have lexical definitions and the property, that the compile time set of defintions could be different from the run time definitions?
5:24:42
gilberth
beach: I abused the macro name space and embedded the presentation types into it by a pure naming convention.
5:25:27
beach
All I am saying is that the standard defines different environments, like the startup environment and the compilation environment.
5:26:05
beach
But then, to make existing implementations conforming, it had to allow for all of those to be the same.
5:26:12
gilberth
beach: That is fine. Very fine. And I love it. Yet, I have no easy and well defined access to it, when I need a new name space.
5:27:03
beach
If the standard had included such access, all existing implementations would be non-conforming.
5:28:19
gilberth
Sorry. Althrough a lot of implementations are poor about that issue. I happen to believe, that is not the issue. How would you define a name space for say presentation types? You'd start with a hash table, right?
5:30:04
gilberth
beach: What I need is a mapping from the pair of the environment and the name [what ever that'll be] to a definition.
5:30:50
gilberth
And if that environment is just the compilation environment without the result being loaded, fine with me.
5:32:09
gilberth
beach: I may be a good hacker, but I could not hack everything at once. Clone me and wait for that person to mature. I think that would be a better plan :)
5:34:17
beach
2. Start including modifications that all implementation (or nearly so) include anyway.
5:34:59
beach
4. Define yet another standard update that requires the separation of the startup environment and the compilation environment.
5:37:13
gilberth
Actually, somebody should have the guts to write down CLtL3. It is a low hanging fruit actually: We have defacto standards: Gray Streams, MOP, bivalent streams, multithreading [through sequence points are hard, very hard].
5:40:08
gilberth
Seriously, is typesetting to a PDF document and thus a pile of dead trees still important?
5:40:28
beach
I don't think including additional functionality like that in the standard is the most important matter.
5:40:56
beach
That functionality already exists, and everyone is already using it, so including it solves no problem.
5:41:40
beach
gilberth: No, I am open to other suggestions, but LaTeX is still the only one that includes all the functionality I need.
5:42:43
beach
I think it is way more urgent to eliminate most of the undefined behavior in the Common Lisp HyperSpec.
5:43:41
beach
And *that* is low-hanging fruit because most existing implementations do the right thing.
5:46:44
gilberth
I figure that. I still like scribe through. I figure, that you want to have it be possible to be edited in some sane way.
5:47:55
beach
What I really want is a protocol for manipulating documents, so that we can stop thinking in terms of markup languages. But I think jackdaniel is working on a CLIM-based documentation system, so maybe that problem will be solved.
5:48:50
gilberth
My motivation some twenty years ago to start the web browser was to have a documentation system.
5:54:09
gilberth
Well, I have two "problems". I was not successful on the McCLIM mailing list to get my design idea accepted. And that made me shy. The other is that I am that damn perfectionist.
5:55:52
beach
gilberth: Even if it is not possible to finish everything, there are ways to avoid wasted efforts. I write papers to document ideas, and we extract independent libraries that can be documented and tested separately.
5:56:59
gilberth
beach: Oh yeah. I still need to publish a paper about my regular expression engine. I solved what people where thinking about for twenty-something years.
7:42:28
flip214
gilberth: I'd be interesting in the paper (& code?) as well... Being a Perl Guy since 1994 or so ;/
7:43:32
jackdaniel
I'll have to dig these ideas on the mailing list archive when I'll have some spare time, I've got curious now :)
7:44:00
gilberth
flip214: Perl compatible I did not yet manage. And I don't its semantcs. It is POSIX.
7:46:05
flip214
Still it would be interesting. Once I invested a bit of time (much too little, though) trying to make CL-PPCRE build match functions via a macro,
7:46:28
flip214
so that the compiler can do all its wonderful work instead of "just" calling closures.
7:47:05
jackdaniel
doesn't it define bunch of compiler-macros for things it can optimize at compilation time?
7:47:52
gilberth
flip214: Drop me a one-liner at gilbert@bauhh.de, so that I'll have your email-address.
7:52:26
gilberth
Well. For those that are interested: I compile group capture to Mealy-automata. This is a completely diffrent business.
7:53:41
gilberth
So you get O(1) for group capture. Though 1 might involve a dozend registers being assigned per character read.
9:51:05
Harag
hi, is there a place/method that can be used to run clean up code on a hunchentoot session timeout (if there is such an event)?
11:38:01
jackdaniel
and to not be a nasty person for other server clients preferably on your own acceptor (i.e not acceptor class defined by hunchentoot)