freenode/#lisp - IRC Chatlog
Search
18:16:04
_death
the asdf manual gives an example with :license but it's not actually specified in the grammar.. so I guess you could have :license (:file "LICENSE" :executive-summary :MIT)
18:28:26
oni-on-ion
i do a similar thing to use .cl extension, (defclass cl-file (cl-source-file) ((type :initform "cl")))
18:31:18
oni-on-ion
idk. this works for me, i was not sure of the expanded and fully resolved name. although naming the subclass cl-file does not clarify matters
18:33:27
oni-on-ion
ohhh i see what you are saying. it is already built in to asdf for .cl , sorry i did not see what you mean.
18:35:02
oni-on-ion
i've developed a particular interest in ".?l" extensions as of late -- prolog .pl, elisp .el, julia .jl, ocaml .ml - and i did not want CL to be left out. also it is semantically more practical to me when extensions are acronyms rather than full words
18:35:28
oni-on-ion
yes. i remember DOS Abuse game, my first exposure to lisp i think. unless i used emacs before this i cant recally
18:35:34
aeth
Don't use .LSP on Unix or NT-based Windows because three character file names have a ton of collisions
18:41:24
oni-on-ion
.pl is the same as perl, already github thinks some of my projects are not in prolog hehe.
18:44:24
aeth
It doesn't just go by extension. I've seen some 'Newlisp' and even some *Python* in CL projects as a false identification
20:05:35
Shinmera
pfdietz: I added my own system to handle that ASDF case. Essetially it defers evaluation and compilation of specific forms until a specified system is loaded.
20:07:38
Shinmera
In radiance all systems that can make use of this deferral must be a subclass of a special system, for which theres an asdf:perform :after method that triggers evaluation
20:09:03
Shinmera
you could add a method on the standard asdf:system, but who knows how long that would work for (since upstream could add a method of its own)
20:12:01
Shinmera
Typically in radiance you use this optional mechanism to provide extra functionality if an implementation of a certain interface is loaded. Since the interface's symbols are always available even without an implementation, symbol resolution in the optional code is also no problem
20:12:55
Shinmera
example: https://github.com/Shirakumo/radiance-contribs/blob/master/r-simple-auth/auth.lisp#L225-L241
20:15:47
Shinmera
The lack of a proper optional dependency spec in ASDF has always bothered me though. Would make this problem much easier
20:18:36
Xach
Well, this does help me in the quicklisp world, because I can statically set the dependencies.
20:19:34
Shinmera
Since then you could do something like: throw the optional code into an optional.lisp, then add (when (find "thing" (asdf:already-loaded-systems) :test #'string=) (load (merge-pathnames "optional.lisp" #.*compile-file-pathname*)))
20:22:54
Xach
Shinmera: the Old ways of doing it made it hard to discover optional dependencies. a new, explicit way would be ok though.
20:23:15
Xach
Like, you might not ever find out that system X required system Y because you never loaded X while Z was also loaded.
20:23:47
Shinmera
Well, in any case, I have a looong list of things I want from my own, future build system :)
21:28:46
jasom
fwiw quicklisp still has to dynamically resolve dependencies in many cases (one-package-per-file systems come to mind).
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/