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)
11:54:20
ym
jackdaniel, Hi. Could you, please, explain why parameter symbols (like x and y in :motion-notify) of event-case has fixed names? Wouldn't it be more lispy to have programmer-defined names? Like (:motion-notify (mouse-x mouse-y) ...) and let CLX bind them corresponding on their place (first is x coordinate, second - y, etc) like in defmacro.
11:59:42
jackdaniel
ym: the short answer is because that's how it was specified in clx (I'm not the author, I'm a mere co-maintainer), if you ask for my guess then: I think that event-case was specified that way to mimic with-slots (but with a "event-type" twist)
15:00:17
dtw
It seems that the current stable Debian 9 system has only two CL implementations: SBCL and GCL. Is it just that there are no Debian maintainers for other implementations or does this also tell something about CL upstream development?
15:08:16
edgar-rft
dtw: According to my experience no linux distribution has well maintained CL packages. Linux package systems usually are designed for a C-like infrastructure and are not really suited for Lisp distribution.
15:11:49
dtw
This may affect software distribution. It's easier to tell users of my software to "apt install sbcl" and type "make" than to tell "compile this Lisp implementation first" and then compile my software.
15:11:59
cage_
dtw, in my limited experience with linux distribution Debian has a, relative, good CL team, SBCL is upgraded quickly on sid
15:12:17
dtw
I used to compile SBCL myself but nowadays I have updated it with my Debian (every two years).
15:15:24
loke
dtw: The debian CL libraries are a mess. Old, unsupported and doesn't work with modern software.