libera/#commonlisp - IRC Chatlog
Search
18:59:30
edgar-rft
nij-: the only thing I know that comes close is XLISP-PLUS (originally written by David Betz, now maintained by Tom Almy) -> https://almy.us/xlisp.html
19:05:18
nij-
gilberth Yes, and that is to expand (() or compiler) macros and load-time-value correctly.
19:06:21
nij-
edgar-rft Thanks! A newer version of it. ..: "however Xlisp 3.0 does have a bytecode compiler and probably will run faster."
19:07:28
gilberth
Unlike XLISP 1.6 which wanted to become a Common Lisp. I don't know on which side XLISP-PLUS is.
19:09:43
gilberth
If you're curious: You may play with XLISP-1.6 and XLISP-3.3 at <https://lispcafe.org/xlisp/>, if you wish.
19:10:58
edgar-rft
XLISP-PLUS is Tom Almy's derivate of XLISP-2, it's closer to Common Lisp and has a more CLOS-like object system instead of the XLISP-2 Smalltalkish object system
19:22:12
gilberth
I should host documentation. And some means to have files of some sort. And for that CLISP I should find a way to load Quicklisp systems. But you cannot really do anything from within that Webworker.
19:23:42
nij-
gilberth FYI: https://novaspec.org/cl/26_1_Glossary#special_operator CLHS has a link for Figure 3-2, but novaspec doesn't currently. Not sure if that's intended.
19:25:05
nij-
Apparently.. just add it to todo if you care, there's no rush. Thanks for novaspec. It's wonderful.
19:31:11
gilberth
I find WASM is a great tool to preserve software. Like this Interlisp. Or the CADR <https://lispcafe.org/cadr/usim.html>. The Computer History Museum hasn't gotten it yet that software can not only be stared at but also be run.
19:33:09
gilberth
I'd like to see more of this. And there is plenty available. It would be great when all this can be made to run with WASM, so that every curious person can have a look without too much hassle installing and configuring emulators.
19:41:57
gilberth
E.g. You find the very original LISP implementation for that IBM 704. You would need to install an emulator and follow some instructions to run it. The just curious would not make this effort. Or you can run MULTICS with MacLisp and the original Emacs. Also takes quite some effort.
19:43:10
gilberth
btw this Emacs is in sofar surprising as you can get around just fine. Same with that Emacs that the CADR has. Not much of the key bindings have changed.
19:43:59
gilberth
You would still need to download something, compile it, and fix bugs or otherwise try to get it to run somehow.
19:44:55
gilberth
That's never easy. And C rots. You usually cannot run something like ten years old or older. Especially so, when you need more than ISO C, which you almost always would need.
19:46:30
nij-
And C.. if with good discipline and writing only ISO and portable code, that should have the same advantage as WASM?
19:46:35
gilberth
nij-: Even DOS is a challenge. I install Debian 8.11 from 2015 just to be able to run dosemu. I was not able to compile dosemu with any more recent Linux distribution.
19:49:22
gilberth
And you would still need to compile it. I think there is value in that about any person who is curious could look at ancient GUIs. Like Interlisp. Or perhaps the XEROX GUI.
19:50:21
gilberth
Or play with ancient Emacs. Or with that original LISP on that IBM 704. Just to see what was there already and realize that we moved about nowhere.
19:52:18
gilberth
I mean, would I need to own a workshop and have knowledge in car mechanics to visit an automible museum? Or take a journey with some classic car?
19:56:30
nij-
When evaluating a dynamic var, doesn't lisp just go to the highest global env and get that binding?
19:58:38
gilberth
What about threads? And even without its an implementation detail. Some implementation might save the old value and store the new value to the global cell, some might keep a list of bindings that are in effect and keep the global cell intact. One is called shallow binding the other deep binding.
19:59:16
edgar-rft
gilberth, bug report: w3m https://lispcafe.org/xlisp/xlisp-1-6/xlisp.html - prints: emscripten <newline> Downloading <newline> Ready - then leaves me with an unresponsive window
20:01:06
gilberth
I could however see that the web page says so. Also I need to run a Webworker, which isn't available everwhere.
20:02:06
edgar-rft
gilberth: I had at least expected the website to send an error message and not force me to kill -9 w3m
20:02:46
nij-
bike When an evaluator is evaluating an AST, how does it tell which variable is dynamic or not?
20:05:06
bike
a local special binding isn't established by a declaration, it's established by binding
20:05:22
bike
you can do, like, (let ((*print-circle* t)) ...) and then the dynamic variable has a local binding
20:05:46
bike
the declaration might make a binding special, but it's not needed if the variable has been globally proclaimed special
20:07:30
bike
the reason it's a dynamic environment and not a lexical environment is that you can do e.g. (defvar *foo*) (defun foo () *foo*) (let ((*foo* 18)) (foo)) => 18
20:10:00
nij-
So there are also multiple sets of dynamic bindings, and they form a DAG like sets of lexical bindings?
20:10:56
bike
i don't know why you would involve DAGs or lexical bindings in a description of dynamic bindings
20:11:59
nij-
Maybe this is implementation details.. but a lexical environment should usually (be implemented in such a way that it) has a parent environment, right?
20:16:14
bike
otherwise they are unrelated, although some dynamic names have a lexical presence. like how (declare (special ...)) has a lexical effect, or how block names are available only lexically.
20:17:49
younder
I have the MIT DEC10 with ITS and TECO EMACS and MacLisp running in a emulator. The config seems to be from 1984. The setup is fairly straightforward.
20:51:45
nij-
bike Does clostrum have a special operator (say, use-globenv) that forces all forms in the body uses the designated global env?
21:05:57
bike
nij-: i'm pretty sure we already talked about something similar and beach or i explained that you can't do anything like that without support from the evaluator for god's sake
23:28:15
nij-
bike Sorry, I remembered part of that conversation. But I thought it wasn't clear; or maybe I misunderstood.
23:33:58
bike
i'll say it again: all existing lisp implementations operate in terms of just one global environment. the environment can't be swapped out.
23:36:13
nij-
Yes, that's right. I'm thinking about bocl though.. how it should handle envs in the first place.
23:59:09
nij-
Ah! If a CL implementation want to provide first class global env, besides providing clostrum, another thing it could do is to expose a special operator for it!!
0:01:16
nij-
standard: "The set of special operator names is fixed in Common Lisp; no way is provided for the user to define a special operator. " The set of special operator names is fixed in Common Lisp; no way is provided for the user to define a special operator.
0:01:29
nij-
Oops Double post. I meant - http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/sec_3-1-2-1-2-1.html#clspecialops
0:02:05
nij-
So the standard bans the implementation from giving the user option to define new special ops.. I wonder if the implementation can provide more special ops though.
0:32:38
bike
i don't know how useful a special operator like that would be though, compared to just having an eval function with an environment parameter
0:33:17
bike
kernel has a similar special operator called $remote-eval or something, and part of the idea was to use it to e.g. evaluate code in a standard environment a la with-standard-io-syntax, but i don't know how practically useful that is
1:33:00
nij-
Does it mean "some" rather than "any" in "interned adj. Trad. 1. (of a symbol) accessible in any package." ? https://novaspec.org/cl/26_1_Glossary#interned