freenode/#lisp - IRC Chatlog
Search
21:57:34
Lycurgus
slyrus1, in hunchentoot-cgi, how would I go about accessing those server variables that are being processed in lines 79-102 of hunchentoot-cgi.lisp?
22:16:02
makomo
MichaelRaskin: i have a question regarding your 2017 ELS paper. i'm on section 5 which demonstrates the impossibility of a general solution
22:16:49
makomo
MichaelRaskin: hm actually, i'll get back to you. let me read the section to the end before asking anything
22:33:55
makomo
MichaelRaskin: ok. i don't understand this part "We need the lexical environment to depend on the run-time input of the macroexpand-all function, so we need to use eval."
22:34:38
makomo
MichaelRaskin: it's not clear to me what it means for the lexical environment to depend on the run-time input of the macroexpand-all function
22:36:36
makomo
MichaelRaskin: when the compiler tries to expand EXPAND-VIA-FUNCTION, it passes it the current environment. this environment contains the 2 gensym-named MACROLETs set up with SET-X1 and SET-X2. then EXPAND-VIA-FUNCTION calls MACROEXPAND-ALL and passes it this environment (so it can clearly see the two MACROLETs)
22:37:43
makomo
MichaelRaskin: when MACROEXPAND-ALL goes on to expand the given form, why can't it just augment the environment it got with the new MACROLET setup by the 2nd SET-X2 and pass *that* to READ-X1-X2?
22:38:17
makomo
for anyone interested, p. 101, https://european-lisp-symposium.org/static/proceedings/2017.pdf
22:43:15
Colleen
Bike: drmeister said 1 hour, 55 minutes ago: The cst compiler behaves differently than the ast compiler. This is what I get in the Activity Monitor. https://usercontent.irccloud-cdn.com/file/1R6CRBUG/image.png
22:43:15
Colleen
Bike: drmeister said 1 hour, 51 minutes ago: - It seems to be spending a lot of time in sigtramp https://usercontent.irccloud-cdn.com/file/wQjK39GH/image.png
22:43:45
makomo
Bike: while walking the form to expand, it starts from the given environment and augments it with any local stuff found within the form
22:44:58
makomo
if we assume the implementation uses no non-standard special operators and such, what's the remaining problem
22:45:11
pjb
makomo: notice how macroexpand and macros have environment parameters! They're needed and useful!
22:45:44
makomo
Bike: wrong choice of words, i meant just using. i.e. our MACROEXPAND-ALL uses MACROEXPAND and MACROEXPAND-1 internally somehow
22:47:45
makomo
Bike: so if only one had the ability to augment the environment, would it be possible?
22:50:28
Bike
like if you have (macrolet ((a ...)) (macrolet ((b ... (a ...))) ...)) the a has to expand correctly
22:53:49
makomo
and if A's body uses something from the outer lexical scope (which is not part of the form that was passed to MACROEXPAND-ALL)
22:54:13
makomo
even if you had the environment, you wouldn't be able to EVAL the macrolet's body inside of it
22:55:10
Bike
i should mention that, as it happens, the old cltl2 had environment operators that could do this.
22:55:22
makomo
so it's a combination of (1) not being able to augment the environment and (2) not being able to eval something within an environment
22:55:48
Bike
to get the macro function, you'd parse-macro to get the lambda expression, then enclose to get the function.
22:56:51
makomo
pjb: well sure, but macroexpansion aside, it's still useful for other kinds of run-time evaluation
22:57:49
Bike
an implementation kind of has to have things like augment-environment, parse-macro, and enclose anyway, so it's a little weird
23:02:11
makomo
wasn't it the case that non-standard special operators can only be introduced as a replacement for standard macros, but that the macro's definition has to be kept as well
23:02:51
Bike
there's a rule that if an implementation implements a macro as a special operator it still has to provide a macro definition. I don't think there's anything ruling out other special operators.
23:04:13
makomo
non-std special ops aside, what about that common FUNCTION extension with NAMED-LAMBDA?
23:05:28
Bike
oh, hey "An implementation can have extensions, provided they do not alter the behavior of conforming code and provided they are not explicitly prohibited by this standard. "
23:06:09
Bike
i guess it doesn't matter much since the question is whether a code walker is conforming
23:16:23
makomo
MichaelRaskin: i think i understand now. if you will by any chance read the above discussion, feel free to let me know of any details i might have missed.
0:44:03
wilfredh
in terms of libraries, I was looking at hutchentoot, but (ql:system-apropos "hutchentoot") doesn't show anything
0:44:43
aeth
There are two (afaik) servers, https://github.com/edicl/hunchentoot/ and https://github.com/fukamachi/woo/
6:57:31
beach
makomo: Thanks for questioning my decision of not wanting the compiler in the initial image.
6:58:26
beach
The "fast module" said (it is going to be too slow and take too much memory). The "slow module" (which is also lazy) believed the fast one.
6:59:12
beach
Yes, as I pointed out, if I can rely on the compiler being present, I can eliminate lots of code.
6:59:57
beach
I might have to be a little bit careful during bootstrapping. I don't want to save each byte of the X86 instructions in a 64-bit word. :)
7:02:05
beach
Anyway, thanks again. The current hypothesis is that I can include the compiler in my bootstrapping output.
7:02:09
makomo
beach: what is this effect you're referring to? i found at least 3 different ones described by Kahneman
7:02:47
beach
It's from the book "thinking, fast and slow". There are roughly two modules, the fast and the slow one.
7:03:19
beach
The fast one is lousy with arithmetic ans probability. The fast one can do that, but it is lazy and tends to believe the fast one.
7:04:29
beach
So, when we hear something like "if we fixed all dripping faucets in France, we could save 100 million liters of water every year", the fast module goes "oh, let's do that then, because that's a lot of water".
7:04:55
makomo
beach: awesome. interested to see how this will affect the bootstrapping. i have yet to understand the effective method computation thingies that are being discussed. i'm not familiar with that part of the mop yet
7:05:08
beach
The slow module, if it is not lazy that day, would divide by the population of France, resulting in 1.5 liters per person per year.
7:08:24
sixbitslacker
Here is your shopping list: (1) Copious dogboy annoyers; (2) Murderous bags; (3) Generous bum animals; (4) Satanic robber contributions; (5) Gaunt flanges; (6) Erroneous compressors
7:09:05
sixbitslacker
Here is your shopping list: (1) Dubious birds; (2) Satirical anti-shock mice; (3) Hesitant terrific selector units; (4) Anonymous dividers; (5) Chinese Unopened paradoxes; (6) Fantastic livers
7:10:03
sixbitslacker
Here is your shopping list: (1) Indolent exhibitions; (2) Recurrent wavechord skis; (3) Biochemical rigorous seducers; (4) Magisterial bears
7:11:13
no-defun-allowed
shinmera: thanks for lquery btw. very fancy clone of a js thing i'm glad i wasn't old enough to bother learning
7:14:38
no-defun-allowed
this had a nice big file of (useless group) spam and i used it to spam (useless group). very symmetrical.
7:15:11
no-defun-allowed
(useless group) is not relevant enough to be mentioned and is slightly controversial. you know how sbcl pprint says # if you go too deep? same thing.
7:15:24
MichaelRaskin
pjb: well, eval is the only standard way to evaluate macroexpand-1 in a lexical environment you can describe but cannot obtain as a lexenv object
7:17:02
MichaelRaskin
makomo: well, you might have missed that just having access to the list of names in the environment is enough to reconstruct a good enough approximation.
7:20:09
MichaelRaskin
makomo: agnostic-lizard does support expansion using an over-approimation of an environment now
8:10:39
_death
right, I'd expect a count instead.. then it's also easy to tweak the distribution with a "temperature" to create more/less surprising sentences