Xach changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/>
zgasma has quit [Ping timeout: 265 seconds]
LiamH has quit [Quit: Leaving.]
wxie has joined #lisp
emys has quit [Ping timeout: 265 seconds]
jeosol has joined #lisp
random-nick has quit [Ping timeout: 240 seconds]
emys has joined #lisp
turona has quit [Ping timeout: 272 seconds]
turona has joined #lisp
lottaquestions_ has joined #lisp
xkapastel has joined #lisp
Khisanth has quit [Ping timeout: 268 seconds]
lottaquestions has quit [Ping timeout: 265 seconds]
frodef has quit [Ping timeout: 260 seconds]
emys has quit [Ping timeout: 246 seconds]
emys has joined #lisp
wxie has quit [Quit: wxie]
Telior has quit [Ping timeout: 260 seconds]
smazga has joined #lisp
smazga has quit [Ping timeout: 240 seconds]
scymtym has joined #lisp
emys has quit [Ping timeout: 246 seconds]
emys has joined #lisp
cjb has quit [Quit: ERC (IRC client for Emacs 26.3)]
orivej has quit [Ping timeout: 265 seconds]
paul0 has joined #lisp
v88m has joined #lisp
Khisanth has joined #lisp
turona has quit [Quit: ...]
turona has joined #lisp
torbo has joined #lisp
Nilby has quit [Read error: Connection reset by peer]
emys has quit [Ping timeout: 265 seconds]
lottaquestions has joined #lisp
lottaquestions_ has quit [Ping timeout: 272 seconds]
emys has joined #lisp
emys has quit [Ping timeout: 240 seconds]
emys has joined #lisp
emys has quit [Ping timeout: 246 seconds]
wxie has joined #lisp
emys has joined #lisp
dddddd has quit [Remote host closed the connection]
emys has quit [Ping timeout: 246 seconds]
bitmapper has quit [Ping timeout: 260 seconds]
emys has joined #lisp
cjb has joined #lisp
lucasb has quit [Quit: Connection closed for inactivity]
aeth_ has joined #lisp
aeth has quit [Ping timeout: 272 seconds]
aeth_ is now known as aeth
EvW1 has quit [Ping timeout: 240 seconds]
smazga has joined #lisp
Codaraxis has joined #lisp
georgiePorgie has joined #lisp
smazga has quit [Ping timeout: 265 seconds]
lottaquestions_ has joined #lisp
wxie has quit [Ping timeout: 240 seconds]
lottaquestions has quit [Ping timeout: 240 seconds]
buffergn0me has joined #lisp
torbo has quit [Remote host closed the connection]
emys has quit [Ping timeout: 268 seconds]
cjb has quit [Remote host closed the connection]
emys has joined #lisp
Nilby has joined #lisp
notzmv has quit [Ping timeout: 268 seconds]
emys has quit [Ping timeout: 240 seconds]
notzmv has joined #lisp
emys has joined #lisp
Lord_of_Life_ has joined #lisp
lottaquestions has joined #lisp
Lord_of_Life has quit [Ping timeout: 240 seconds]
lottaquestions_ has quit [Ping timeout: 272 seconds]
Lord_of_Life_ is now known as Lord_of_Life
lottaquestions_ has joined #lisp
lottaquestions has quit [Ping timeout: 268 seconds]
wsinatra has joined #lisp
akoana has joined #lisp
georgiePorgie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
wsinatra has quit [Quit: WeeChat 2.7]
emys has quit [Ping timeout: 265 seconds]
uabobbobobo has joined #lisp
<uabobbobobo> Hello!
<no-defun-allowed> Hello uabobbobobo.
rjnw has quit [Ping timeout: 260 seconds]
georgiePorgie has joined #lisp
<uabobbobobo> I'm fooling around with SHOP3 (and automated HTN planner https://shop-planner.github.io). I'm trying to produce a graph (shop3-graph-planner) of a plan as generated from shop3/shop3/examples/rovers/pXX.lisp. I've noticed that (find-plans-stack 'problem1 :plan-tree T :verbose T) produces what seems to be multiple output streams (the plan, plan-tree,
<uabobbobobo> and a cl-dot graph-object). How do I bind enhanced-plan-tree object?
emys has joined #lisp
msk has quit [Read error: Connection reset by peer]
msk has joined #lisp
georgiePorgie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
rjnw has joined #lisp
<buffergn0me> uabobbobobo: Do you mean bind the *ENHANCED-PLAN-TREE* variable? If you look at the definition of FIND-PLANS-STACK, that is what :plan-tree keyword does
PuercoPope has joined #lisp
_whitelogger has joined #lisp
<uabobbobobo> after running find-plans-stack :plan-tree***
smazga has joined #lisp
georgiePorgie has joined #lisp
lottaquestions has joined #lisp
emys has quit [Ping timeout: 272 seconds]
ggole has joined #lisp
lottaquestions_ has quit [Ping timeout: 272 seconds]
smazga has quit [Ping timeout: 240 seconds]
ebrasca has joined #lisp
<buffergn0me> clhs multiple-value-bind
<buffergn0me> uabobbobobo: Common Lisp functions can return multiple values, that is what you are seeing. The second return value is a list of plan trees
emys has joined #lisp
<aeth> multiple-value-bind, multiple-value-call, multiple-value-list. And for the opposite: values and values-list
<aeth> There are a few others that I'm leaving out. Most notably, you can SETF values (on both sides)
pierpal has joined #lisp
<uabobbobobo> Very happy to see this! So I'd so something like (setq *dgraph* (multiple-value-bind (x y z) (find-plans-stack 'roverprob :plan-tree T :verbose 3) (list y)))
georgiePorgie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<uabobbobobo> ?
<uabobbobobo> aeth, yes! I was fiddling around with multiple-value-list and multiple-value-call. Thank you, these are both very helpful
<LdBeth> uabobbobobo: you cannot assign all returned multiple value to a variable
<LdBeth> Only the first one is saved and the rest are discarded
<aeth> unless you do m-v-b or do something like (setf (values x y z) (values 1 2 3))
<aeth> the distinction is that the latter sets, doesn't return
<aeth> I'm a bit disappointed that LET didn't have a parallel (let (((values x y z) (values 1 2 3))) ...) to SETF's setting of values. m-v-b shouldn't be necessary and when it nests it can get ugly
<aeth> It's not the easiest macro to correct, either, because things can get messy
<uabobbobobo> Hmm.. I'm really starting to like this channel. :-)
<uabobbobobo> Let me give these ideas some efforts
emys has quit [Ping timeout: 240 seconds]
no-defun-allowed has quit [Ping timeout: 240 seconds]
<aeth> in case I was unclear, the LET version doesn't work, but the SETF version does, and I was upset that there wasn't a parallel there like there is for e.g. values-list vs. multiple-value-list
emys has joined #lisp
akoana has left #lisp ["Leaving"]
<Bike> if you go farther with that you get the idea let should bind places... which someone has written macros for, i remember seeing it on cliki
<aeth> hmm
gravicappa has joined #lisp
<aeth> I might have to rethink my "super-let" design
<Bike> also declarations get even suckier to process.
<aeth> Well, when I get back to it. One of the reasons I've procrastinated it is because I'd have to write my own Emacs indentation for it because it is essentially designed for flat binding of all of the binding forms, like flet and labels (iirc, consecutive blocks of labels counts as one labels expansion)
<aeth> And, yes, declarations were the other thing that were a mess!
<beach> Good morning everyone!
<aeth> Mainly because I'm a bit annoyed at those rare functions where I might have like 5-6 layers of binding nesting if I e.g. have a let, a m-v-b, and a flet
ebzzry has joined #lisp
no-defun-allowed has joined #lisp
<no-defun-allowed> Good morning beach!
<Bike> i'd just use one of those dumb nest macros
<Bike> (defmacro nest ((&rest binds) &body body) (if (null binds) `(progn ,@body) `(,@(first binds) (nest ,(rest binds) ,@body)))), i think that's how it goes
emys has quit [Ping timeout: 268 seconds]
Bike has quit [Quit: Lost terminal]
<buffergn0me> It sounds like LET should have an equivalent to DEFSETF
<buffergn0me> That is, make variable binding/destructuring generic, like "lvalues" are generic in Common Lisp assignment
<buffergn0me> call it LETF
quazimodo has quit [Ping timeout: 240 seconds]
quazimodo has joined #lisp
Codaraxis has quit [Read error: Connection reset by peer]
emys has joined #lisp
georgiePorgie has joined #lisp
oxum has quit [Read error: Connection reset by peer]
zaquest has quit [Quit: Leaving]
emys has quit [Ping timeout: 265 seconds]
quazimodo has quit [Ping timeout: 268 seconds]
vlatkoB has joined #lisp
narimiran has joined #lisp
<no-defun-allowed> I heard of something similar on Lisp Machine Lisp; how should LETF act with threads though?
<no-defun-allowed> And would DEFLETF need a second function to revert the changes?
emys has joined #lisp
<buffergn0me> no-defun-allowed: I am not sure I follow. Destructuring is non-destructive, and you would be binding either lexical or dynamic variables.
<aeth> no-defun-allowed: LETF looks like a misspelling of LEFT... my brain can't handle it
<aeth> no-defun-allowed: why would it delete?
georgiePorgie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<aeth> are we talking about unwind-protect levels of functionality?
oxum has joined #lisp
oxum has quit [Read error: Connection reset by peer]
oxum has joined #lisp
oxum_ has joined #lisp
georgiePorgie has joined #lisp
oxum_ has quit [Remote host closed the connection]
<no-defun-allowed> Hm, I was thinking like (letf (((car x) y)) ...), which in my mind would RPLACA X then RPLACA it back.
oxum has quit [Read error: Connection reset by peer]
<aeth> oh
<aeth> So it would need unwind-protect in that case
<trittweiler> LETF is getting the existing value of a place, setting it to a new value, and the resetting it to the old value in the cleanup form of an unwind-protect. Obviously not thread-safe. The only way to make this thread-safe is if every place goes through another level of indirection (where the thread-local value would sit)
<aeth> no-defun-allowed: I can see the use of that sort of functionality, but you're almost reinventing dynamic/special variables at that point.
<no-defun-allowed> I don't disagree.
<buffergn0me> I guess I picked the wrong name. I did not mean generic place binding, just a generic way to describe destructuring into variable bindings.
<no-defun-allowed> Oh, the other way around.
nostoi has joined #lisp
oxum has joined #lisp
emys has quit [Ping timeout: 246 seconds]
emys has joined #lisp
sauvin has joined #lisp
emys has quit [Ping timeout: 240 seconds]
emys has joined #lisp
amerlyq has joined #lisp
buffergn0me has quit [Ping timeout: 240 seconds]
smazga has joined #lisp
buffergn0me has joined #lisp
<uabobbobobo> What does this output mean? (NIL (#<HASH-TABLE :TEST EQ :COUNT 108 {1001B70FC3}>)) ?
<ebrasca> uabobbobobo: list with 2 elements?
smazga has quit [Ping timeout: 268 seconds]
<uabobbobobo> Primarily: #<HASH-TABLE :TEST EQ :COUNT 108 {1001B70FC3}>
<ebrasca> It is some hash table
<uabobbobobo> How do I access it?
<buffergn0me> clhs gethash
<White_Flame> (gethash <key> (second *)) where * refers to the previous return value at the repl
<White_Flame> if you have alexandria loaded, it has functions to convert hashtables into alists so you can dump the contents pretty easily
Necktwi has quit [Ping timeout: 260 seconds]
<White_Flame> oh wait, that would be (first (second *)), since the hashtable is in a 1-element sublist of the returned list
<buffergn0me> uabobbobobo: If you are using SLIME, you can also right click Inspect
<uabobbobobo> What is {1001B70FC3} ? what is :test? what is :count?
<uabobbobobo> buffergn0me, I'm using sly, but in emacs -nw
<beach> uabobbobobo: The first thing is probably the address.
<beach> The :test is what you give to MAKE-HASH-TABLE.
<beach> And I am guessing :count is the number of items in the table.
<White_Flame> anything wrapped in #< ... > is not a readable literal; it's a print-only form of some internal structure
<White_Flame> and yeah, the braces hold an "identity" field which is usually the current address (GC can move things around)
ebzzry has quit [Ping timeout: 268 seconds]
<uabobbobobo> Oh I see. In order to access that internal structure, I need to bind the results to a variable I define?
<White_Flame> unfortunately, hashtables don't have a literal syntax in standard CL
georgiePorgie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<White_Flame> it's just a value; whether you store it into a variable or use it inline doesn't change anything
JohnMS_WORK has joined #lisp
ebzzry has joined #lisp
<buffergn0me> uabobbobobo: (loop for x being the hash-key of *hash-table* collect x) to get the keys of the hash table
<ebrasca> uabobbobobo: It is already bind if is last 3
Codaraxis has joined #lisp
<ebrasca> * for last value in repl
<ebrasca> and ** ***
<ebrasca> for second and 3
<uabobbobobo> ebrasca, whoa... That's might useful!!!
oxum_ has joined #lisp
<uabobbobobo> mighty even :-)
<uabobbobobo> buffergn0me this is like a "list-comprehension" ?
oxum_ has quit [Remote host closed the connection]
oxum_ has joined #lisp
oxum has quit [Read error: Connection reset by peer]
<ebrasca> clhs * ** ***
<ebrasca> clhs *, **, ***
<White_Flame> clhs **
nostoi has quit [Quit: Verlassend.]
<splittist> The ELS site says nothing about when registration as an attendee opens, or works. I'm worried I'll miss out in the stampede...
<splittist> *or how it
<uabobbobobo> if *pt* is ((NIL (#<HASH-TABLE :TEST EQ :COUNT 108 {1001B70FC3}>))), is this excessive: (car (car (cdr (car (list *pt*)))))
<White_Flame> (destructuring-bind ((ign (ht))) *pt* (declare (ignore ign)) ...)
<White_Flame> is often more readable
ebzzry has quit [Ping timeout: 240 seconds]
<buffergn0me> uabobbobobo: LOOP does do list comprehensions, and other things like control flow. It is like an infix programming language inside Common Lisp.
<White_Flame> although (caadar (list *pt*)) is the shortest way to state direct acccess
zaquest has joined #lisp
<White_Flame> (if I have my As and Ds ordered correctly(
<buffergn0me> uabobbobobo: LIST makes a new list, so (car (list x)) is just x
nullman has quit [Ping timeout: 265 seconds]
rjnw has quit [Ping timeout: 240 seconds]
frodef has joined #lisp
<uabobbobobo> sorry for asking so many idiotic questions.
<uabobbobobo> I've been needing to ask people about lisp-stuff for years now, and today I'm a growing wizard.
<uabobbobobo> Thank you all, I'm so happy to get these things working as well as to learn so many new and nifty things. :-)
<White_Flame> there's also #clschool, whereas you might sometimes get overcomplex answers here or crowded by larger discussions here
<White_Flame> (unless you want overly pedantic answers with tons of specifics, in which case this is your place ;) )
<uabobbobobo> It's taking some time to make sense of what's being shared, but the exploration of ideas, discovery of inner-workings and new features, and the enlightening of my mental bulbs is extremely enjoyable.
<uabobbobobo> I do imagine that when the channel is a bit busier, keeping-up may become quite the challenege
<uabobbobobo> Either way, if my questions are okay here - however mundane they may appear to be - I'm assuming it's okay to challenge my own confusion here.
frgo has quit [Ping timeout: 265 seconds]
scymtym has quit [Ping timeout: 272 seconds]
lottaquestions_ has joined #lisp
lottaquestions has quit [Ping timeout: 265 seconds]
X-Scale` has joined #lisp
X-Scale has quit [Ping timeout: 272 seconds]
X-Scale` is now known as X-Scale
Codaraxis has quit [Quit: Leaving]
vhost- has quit [Ping timeout: 240 seconds]
jprajzne has joined #lisp
rtra has quit [Ping timeout: 240 seconds]
v_m_v has joined #lisp
msk has quit [Remote host closed the connection]
varjag has joined #lisp
msk has joined #lisp
v_m_v has quit [Ping timeout: 260 seconds]
darkstardevx has quit [Ping timeout: 240 seconds]
darkstardevx has joined #lisp
frgo has joined #lisp
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
emys has quit [Ping timeout: 268 seconds]
karlosz has joined #lisp
montaropdf has joined #lisp
lottaquestions_ has quit [Ping timeout: 240 seconds]
oxum_ has quit [Ping timeout: 272 seconds]
oxum has joined #lisp
lottaquestions_ has joined #lisp
Cymew has joined #lisp
emys has joined #lisp
lottaquestions has joined #lisp
uabobbobobo has quit [Remote host closed the connection]
lottaquestions_ has quit [Ping timeout: 265 seconds]
rwcom5 has joined #lisp
rwcom has quit [Ping timeout: 260 seconds]
rwcom5 is now known as rwcom
Necktwi has joined #lisp
karlosz has quit [Quit: karlosz]
cl-arthur has quit [Remote host closed the connection]
lottaquestions has quit [Remote host closed the connection]
scymtym has joined #lisp
lottaquestions has joined #lisp
msk has quit [Read error: Connection reset by peer]
msk has joined #lisp
buffergn0me has quit [Ping timeout: 240 seconds]
madage has quit [Ping timeout: 240 seconds]
emys has quit [Ping timeout: 272 seconds]
emys has joined #lisp
madage has joined #lisp
oxum has quit [Remote host closed the connection]
pjb has quit [Remote host closed the connection]
oxum has joined #lisp
pjb has joined #lisp
oxum has quit [Remote host closed the connection]
ebzzry has joined #lisp
lottaquestions_ has joined #lisp
emys has quit [Ping timeout: 260 seconds]
pjb has quit [Remote host closed the connection]
no-defun-allowed has quit [Quit: killed]
Gnuxie[m] has quit [Quit: killed]
LdBeth has quit [Quit: killed]
pjb has joined #lisp
oxum has joined #lisp
lottaquestions has quit [Ping timeout: 272 seconds]
hhdave has joined #lisp
oxum has quit [Remote host closed the connection]
pjb has quit [Remote host closed the connection]
georgiePorgie has joined #lisp
pjb has joined #lisp
ljavorsk has joined #lisp
oxum has joined #lisp
hhdave_ has joined #lisp
hhdave has quit [Ping timeout: 248 seconds]
hhdave_ is now known as hhdave
msk has quit [Remote host closed the connection]
pjb has quit [Remote host closed the connection]
msk has joined #lisp
pjb has joined #lisp
oxum has quit [Remote host closed the connection]
davepdotorg has joined #lisp
pjb has quit [Remote host closed the connection]
lemoinem has quit [Killed (niven.freenode.net (Nickname regained by services))]
lemoinem has joined #lisp
pjb has joined #lisp
msk has quit [Remote host closed the connection]
msk has joined #lisp
oxum has joined #lisp
dale has quit [Quit: My computer has gone to sleep]
oxum has quit [Remote host closed the connection]
pjb has quit [Remote host closed the connection]
oxum has joined #lisp
katco has joined #lisp
oxum has quit [Remote host closed the connection]
Josh_2 has joined #lisp
oxum has joined #lisp
ted_wroclaw has joined #lisp
ted_wroclaw has quit [Client Quit]
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
ljavorsk has quit [Remote host closed the connection]
v88m has quit [Read error: Connection reset by peer]
ljavorsk has joined #lisp
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
Necktwi has quit [Ping timeout: 265 seconds]
v_m_v has joined #lisp
no-defun-allowed has joined #lisp
LdBeth has joined #lisp
eriix[m] has joined #lisp
tadni has joined #lisp
EuAndreh[m] has joined #lisp
keep-learning[m] has joined #lisp
Irenes[m] has joined #lisp
Gnuxie[m] has joined #lisp
nonlinear[m] has joined #lisp
fanta1 has joined #lisp
georgiePorgie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
ljavorsk has quit [Ping timeout: 248 seconds]
wxie has joined #lisp
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
georgiePorgie has joined #lisp
rtra has joined #lisp
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
mingus has joined #lisp
cosimone has joined #lisp
Nilby has left #lisp ["👽愛🆑"]
wxie has quit [Ping timeout: 246 seconds]
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
amerlyq has quit [Ping timeout: 240 seconds]
papachan has joined #lisp
amerlyq has joined #lisp
<loke`> Oladon: Well, I'm here now.
msk_ has joined #lisp
msk has quit [Read error: Connection reset by peer]
georgiePorgie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
wxie has joined #lisp
<flip214> splittist: my HR asked me a few times already, too... but I'm convinced that Shinmera will keep us updated ;)
<Shinmera> I haven't heard back from Didier is all I can say.
random-nick has joined #lisp
<Shinmera> splittist: as for how it works, it'll work the same as two years ago; there'll be a registration form on the website and you can pay through credit card directly (via stripe).
<splittist> Those French jazz musicians!
<splittist> Shinmera: I look forward to it.
|Pirx_off has joined #lisp
|Pirx| has quit [Ping timeout: 240 seconds]
prince1 has quit [Ping timeout: 272 seconds]
georgiePorgie has joined #lisp
<Shinmera> I had to make some changes to it due to new EU regulations
<Shinmera> I did those a long time ago though and Didier never got around to testing it. I think.
<Shinmera> Ugh, once again annoyed at the poor support for streams in Lisp (where's my poll/select/etc?)
<Cymew> I remember seeing that sentiment once in a while, and I remember thinking I see lot of stuff about grey streams and other kind of streams. I don't think I've ever seen it exemplified like that before, mentioning poll/select.
wxie has quit [Ping timeout: 260 seconds]
bitmapper has joined #lisp
v_m_v has quit [Remote host closed the connection]
<flip214> Shinmera: https://github.com/fukamachi/woo is a fast non-blocking HTTP server built on top of libev
<flip214> Shinmera: if you're thinking about high-performance IO, I'm afraid that CL streams are already a major hurdle...
<flip214> I guess the low-level functions are a better bet
<no-defun-allowed> (lparallel:psome (lambda (stream) (peek-char stream) stream) streams) ; I am truly sorry for this pretend select.
zaquest has quit [Quit: Leaving]
ebzzry has quit [Ping timeout: 260 seconds]
zaquest has joined #lisp
ebzzry has joined #lisp
FreeBirdLjj has joined #lisp
darkstardevx has quit [Ping timeout: 260 seconds]
darkstardevx has joined #lisp
smazga has joined #lisp
X-Scale has quit [Ping timeout: 260 seconds]
X-Scale` has joined #lisp
X-Scale` is now known as X-Scale
<flip214> mop:slot-definition-readers only works on direct slots, but mop:class-slots returns the effective slots only - which are incompatible. What am I missing here?
smazga has quit [Ping timeout: 260 seconds]
jello_pudding has quit [Ping timeout: 245 seconds]
nullman has joined #lisp
<Shinmera> flip214: This does not help me for lisp streams.
dddddd has joined #lisp
georgiePorgie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<jackdaniel> Shinmera: at least two implementations have an extension called serve-event, is that what you are looking for? that works fine only for file streams though
<jackdaniel> just as select and poll do
<Shinmera> Unfortunately not, but good to know!
<jackdaniel> writing something working any kind of streams would probably require some kind of busy waiting based on listen
gko_ has joined #lisp
cosimone has quit [Quit: Terminated!]
jello_pudding has joined #lisp
<Shinmera> Hmm, listen doesn't seem to work right under Swank. At least (loop until (listen)) seems to just loop forever no matter what I enter.
cosimone has joined #lisp
frgo has quit [Ping timeout: 240 seconds]
<jackdaniel> swanks input stream is not an interactive-stream afair
amerlyq has quit [Ping timeout: 268 seconds]
v_m_v has joined #lisp
<Shinmera> then it should always return true.
amerlyq has joined #lisp
orivej has joined #lisp
<jackdaniel> according to spec yes. if you want to understand what's going under the hood you need to check swank's gray stream implementation
amerlyq has quit [Client Quit]
<Shinmera> I guessed so, sigh.
<jackdaniel> afaik it has some internal buffer which is lazily filled when you call read on the stream
amerlyq has joined #lisp
amerlyq has quit [Client Quit]
pjb has joined #lisp
pierpal has quit [Read error: Connection reset by peer]
<flip214> when using xcml:parse with a cxml-xmls:make-xmls-builder, can I tell it to ignore the whitespace in the XML?
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
fanta1 has quit [Quit: fanta1]
prince1 has joined #lisp
amerlyq has joined #lisp
Bourne has joined #lisp
Bourne has quit [Remote host closed the connection]
prince1 has quit [Ping timeout: 265 seconds]
v88m has joined #lisp
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
rtra has quit [Ping timeout: 272 seconds]
smokeink has joined #lisp
rtra has joined #lisp
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
wxie has joined #lisp
v88m has quit [Ping timeout: 260 seconds]
smokeink has quit [Ping timeout: 240 seconds]
frgo has joined #lisp
v_m_v has quit [Remote host closed the connection]
wxie has quit [Ping timeout: 272 seconds]
oxum has quit [Remote host closed the connection]
georgiePorgie has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
pierpal has joined #lisp
davr0s has quit [Remote host closed the connection]
v_m_v has joined #lisp
m00natic has joined #lisp
ym has joined #lisp
rtra has quit [Ping timeout: 246 seconds]
Bike has joined #lisp
frodef has quit [Ping timeout: 265 seconds]
JohnMS_WORK has quit [Read error: Connection reset by peer]
jonatack has quit [Ping timeout: 245 seconds]
pierpal has quit [Ping timeout: 260 seconds]
mingus has quit [Quit: ERC (IRC client for Emacs 26.3)]
vegai has joined #lisp
lucasb has joined #lisp
_paul0 has joined #lisp
paul0 has quit [Ping timeout: 246 seconds]
EvW has joined #lisp
brettgilio has quit [Ping timeout: 240 seconds]
oxum has joined #lisp
Inline has joined #lisp
brettgilio has joined #lisp
<flip214> No package form found while trying to define package-inferred-system lil/interface/monad from file /home/marek/.quicklisp/dists/quicklisp/software/lisp-interface-library-20180430-git/interface/monad.lisp
<flip214> [Condition of type ASDF/PACKAGE-INFERRED-SYSTEM:PACKAGE-INFERRED-SYSTEM-MISSING-PACKAGE-ERROR]
oxum has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 272 seconds]
oxum has joined #lisp
Josh_2 has quit [Ping timeout: 240 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]
froggey has quit [Ping timeout: 272 seconds]
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
rtra has joined #lisp
v88m has joined #lisp
georgiePorgie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
oxum has quit [Remote host closed the connection]
oxum_ has joined #lisp
_paul0 is now known as paul0
oxum_ has quit [Read error: Connection reset by peer]
bitmapper has quit [Remote host closed the connection]
oxum has joined #lisp
bitmapper has joined #lisp
prince1 has joined #lisp
jcowan has joined #lisp
<jcowan> Does anyone know why tokens composed of two or more dots are illegal? No reason is given either in the CLHS or in CLtL1. If there are a lot, it's hard to read, but no harder than ____________ (as distinct from _____________), both of which are valid symbols. Certainly ... is not hard to read.
<jackdaniel> what would (a . b . c) mean? ((cons a b) c) or (cons a (cons b c)) :?
<beach> jackdaniel: That's not the situation jcowan is referring to.
<jackdaniel> or maybe (cons (cons a |) (cons ↄ c))
papachan has quit [Quit: Leaving]
<jackdaniel> hm, no?
<Bike> i for one would be kind of annoyed to see (.. . ...)
<jcowan> jackdaniel: I mean (let ((... 32) ...)
<jackdaniel> ah, thanks
<jackdaniel> did you notice how I've ripped the b letter in the last example? :-)
<jcowan> Of course such names can be used tastelessly, but why go to the trouble of forbidding them specially when all-underscore names are not.
<jcowan> ?
<Bike> well, underscores aren't as important a part of the syntax, they're just constituents
<dlowe> maybe some ancient system choked on them
<_death> I think (a . b . c) used to have meaning (hunks)
prince1 has quit [Ping timeout: 272 seconds]
<Bike> wheeas dots are for conses as well as numbers
* jcowan looks in the maclisp manual
<Bike> probably not any super important reasons, though
<_death> so (a . b . c .)
<scymtym> note that only two or more /unescaped/ dots are illegal
oxum_ has joined #lisp
<jackdaniel> '|...|
oxum has quit [Ping timeout: 265 seconds]
<jcowan> Yes, hunks are interesting. The syntax chapter of the Pitmanual, however, only explains the special cases, not the defaults.
<jackdaniel> (a joke) multiple dots may mean multiple zeros, invoke (format t "~0,0f~0,0f~0,0f" 0.0 0.0 0.0) for instance ;)
<pjb> jcowan: It's just that the standard reader doesn't parse this syntax, and there's no easy way to read the dot. It's not a first class lisp object! It's pure syntax. To be able to read several dots, a user program would have to implement a reader macro for #\(, and cannot use just READ or READ-DELIMITED-LIST.
<pjb> jcowan: moreover, the standard leaves it to implementations to provide meaning for multiple dots, as well as multiple colons.
<pjb> (foo . bar . baz) foo::bar::baz or foo:::bar could mean something, implementation dependent.
<pjb> (foo .. bar) and (foo ... bar) could also mean something, implementation dependent.
<pjb> Note that you could also write a reader macro for #\(, that would read them eg. as ranges, or something else.
<pjb> (1 .. 5) -> (1 2 3 4 5) #(1 .. 5) -> #(1 2 3 4 5)
<_death> don't schemes use them in hygienic macros?
oxum_ has quit [Remote host closed the connection]
<pjb> (1 .. 5 11 .. 15) -> (1 2 3 4 5 11 12 13 14 15)
<pjb> _death: scheme uses ...
grewal has quit [Ping timeout: 240 seconds]
LiamH has joined #lisp
grewal has joined #lisp
<jcowan> AFAICT the CLHS is silent about such tokens: they are not potential numbers, and they are not required to be symbols, but every token is a symbol or number, so that says to me that they are invalid.
<jcowan> _death: ... is used in a limited context in macros, but is otherwise an ordinary identifier, as are all other all-dots symbols other than the consing dot.
<_death> jcowan: so maybe they wanted to reserve ... for the possibility of future CL extension.. if you use a nonstandard readtable as pjb suggests, it's easy to allow that
<jcowan> Odin-: Thanks, that's definitive. So reading .. etc. has a defined behavior and can't be extended by an implementation.
<Odin-> At least not using the standard readtable. Aren't all bets off once you start messing with that?
<jackdaniel> they are
<jcowan> Sure. If you change the readtable, then making your favorite CL also accept Algol 60 is just a SMOP.
<scymtym> it says "If a token …" which implies that the characters are not interpreted under the control of a reader macro
bitmapper has quit [Remote host closed the connection]
bitmapper has joined #lisp
<Odin-> Reader macros happen before tokenisation, so they can make the token vanish.
<scymtym> yes, and then 2.3.3 does not apply and thus is not violated is what i'm thinking
<pjb> jcowan: readiing .. has no definde behavior, and CAN be extended by an implementation.
oxum has joined #lisp
amerlyq has quit [Read error: Connection reset by peer]
<pjb> Well, it has the defined behavior of signaling an error if the implementation doesn't extend it: (read-from-string "..") #| ERROR: Reader error on #<string-input-stream :closed #x3020028BEA7D>: Illegal symbol syntax in "..". |#
amerlyq has joined #lisp
lottaquestions has joined #lisp
lottaquestions_ has quit [Ping timeout: 265 seconds]
<pjb> or (read-from-string "..") -> #<anwer-to-your-philosophical-question 42>
<Odin-> Isn't the initial readtable required to be equivalent to the standard readtable?
<pjb> ^ implementation specific extension. This one has a mind reader attached.
<pjb> Odin-: nope :-(
<Odin-> Then what does "conforms to standard syntax" mean?
<_death> in cl-su-ai Steele writes "I find I can't easily write myself something akin to READ-DELIMITED-LIST that handles dotted lists because of the problem of recognizing all-dots tokens. PEEK-CHAR can only peek one ahead, so I can't tell whether there is a space after a dot before calling READ recursively." .. there are responses mentioning the issue more generally
<pjb> Odin-: adding (setf *readtable* (copy-readtable nil)) to your rc file.
<pjb> Hmm. Conforms to the standard syntax, but can be distinct frmo the standard readtable !
<Bike> it means that altering the initial readtable doesn't change the standard readtable
<Bike> i think
<pjb> If it's distinct, how can it conform to the standad syntax?
<Odin-> Yeah, you're allowed to change it.
<pjb> This is contradictory, so it's meaningless.
<splittist> _death: fascinating
<Bike> and you can always call (copy-readtable nil) to get a new copy of the standard readtable
<pjb> The fact is that in ccl, in clisp, and probably other implementations, the initial readtable contains non-standard reader macros.
<_death> specifically, Moon says "How about a way (a special variable?) to turn off the somewhat silly restriction that you can't have a symbol named .?"
<pjb> ccl has #/ #_
prince1 has joined #lisp
<pjb> _death: yes. Just implement your own reader with that way.
<_death> pjb: sure.. this is from cl-su-ai, wrt standard syntax
<pjb> _death: it's a little complex, since the internal data structure of the lisp reader is a sequence of pairs (character character-trait). There are several ways to represent it. One would have to define an agreed API, or a specific representation for a token to lisp-object parametrable function.
<_death> with your own reader you may find it ok to assume greater lookahead
<Odin-> pjb: I wonder if the idea is that "standard syntax" means "don't mess with the syntax types", and not "don't define any macro characters".
<Odin-> pjb: Because the section on sharpsign explicitly notes which undefined characters are verboten to the implementation ... implicitly saying that certain ones are fair game.
<pjb> Odin-: yes, the reasonable interpretation is that the initial readtable contains the standard readtable and only "extends" it, still allowing all valid standard syntax.
<pjb> Odin-: exact. And Unicode.
prince1 has quit [Ping timeout: 260 seconds]
cosimone has quit [Quit: Quit.]
jprajzne has quit [Quit: Leaving.]
froggey has joined #lisp
<pjb> _death: I wanted to write a CDR to define this API, but never too the time to do it.
<pjb> +k
<_death> pjb: cool.. did you use these customization hooks for something specific?
<Odin-> pjb: Technically the standard only specifies the status of the standard characters, so unless you're going to prohibit a wider range of characters - which the standard very obviously doesn't intend - clearly extension that doesn't conflict with the specified syntax is allowed.
dddddd has quit [Ping timeout: 260 seconds]
<Odin-> Since . is defined as a constituent and not a macro character, I'd say the implementation is _not_ free to define a reader macro on it in the initial readtable.
<splittist> But it would be a non-standard / extended implementation of the #\( reader macro, for example
<pjb> _death: cf. readtable-parse-token. All those URLs mean something!
<pjb> Odin-: exact. Hence I'd suggest having fun with · instead of .
Cymew has quit [Ping timeout: 265 seconds]
<pjb> (quote (foo · bar · baz)) #| --> (foo · bar · baz) |# works perfectly in all unicode implementation.
<pjb> Even all 8-bit implementation using iso-8859-1 or iso-8859-15. (char-code #\·) #| --> 183 |#
<Odin-> pjb: That should be fair game, yes, even to the implementation.
<Odin-> There's also UTF-32 vs. UTF-16.
<pjb> ² is in iso-8859-1 too, so (let ((x² (* x x))) (+ (* a x²) (* b x) c))
<Odin-> ABCL uses UTF-16, and according to the docs so does Allegro. :)
orivej has joined #lisp
<jcowan> Hunk syntax like this is interesting, but separate from my original issue, which was why .. and ... etc. aren't identifiers. Thanks for the Steele quote, btw.
<jcowan> UTFs are only relevant at the bit-bashing level: at the character level they implement exactly the same character repertoire.
<_death> pjb: I meant, did you use readtable-parse-token for something specific.. all these URLs you gave are for the reader implementation, not for user code that makes use of it.. but there is user code in your repo as well, so the answer is yes
<pjb> jcowan: basically, because of scheme, CL wanted to reserve them for future extensions such as ... like in scheme.
smokeink has joined #lisp
grewal has quit [Ping timeout: 268 seconds]
gko_ has quit [Remote host closed the connection]
<pjb> _death: oh, right. Somebody used my lisp reader to read lisp source files to generate documentation. They definitely used it to avoid interning symbols as normal symbols.
<pjb> (and reported a bug too).
grewal has joined #lisp
<pjb> Samium Gromoff
<pjb> IIRC.
frodef has joined #lisp
<_death> pjb: the "because of scheme" was just my speculation, no evidence
<Odin-> jcowan: Yes and no. UTF-16 can and does make things complicated for code points above U+FFFF, because if the internal representation is UTF-16, then the lisp-level functions give you surrogates.
jayspeer has joined #lisp
<splittist> Before we switch into our regular #lispunicode programming, can anyone suggest a replacement key-chord for emacs' kill-region (since it is stolen by the browser through which I am manipulating the terminal on which I am running emacs)?
<splittist> s/it/C-w/
<splittist> (Although I must say its absence is making me use ESC C-k a lot more)
<pjb> kill-region is on C-w, s-x, <S-delete>, <menu-bar> <edit> <cut>
jmercouris has joined #lisp
<pjb> M-x kill-region RET occasionnaly.
<splittist> S-delete - of course! thanks
<pjb> splittist: C-h w kill-region RET
<splittist> pjb: indeed
<jmercouris> necessary to provide encoding for cffi:foreign-string-alloc, reccommended?
<jmercouris> or is cffi:*default-foreign-encoding* OK?
gko_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 268 seconds]
<_death> if you don't know, leave it to the special?
<jcowan> Odin-: If so the implementation is broken.
<jmercouris> _death: OK
<jmercouris> I just thought I may explicitly set to UTF-8
<_death> jmercouris: does the foreign code expect utf-8?
<pjb> jmercouris: it depends on the foreign code!
<pjb> jmercouris: read the doc!
<jmercouris> I write the code...
<jmercouris> it is User data
Lord_of_Life has joined #lisp
varjag has quit [Quit: ERC (IRC client for Emacs 25.2.2)]
<jmercouris> but that is a good point, for future thinking
<Odin-> jcowan: I won't disagree, but that exact brokenness is also in Java, JavaScript, and pervasive in Windows land.
<_death> you can define your own special jmercouris:*default-foreign-encoding*
<jcowan> Java at least has character-oriented as opposed to codepoint-oriented methods, and on recent Javas strings in the Latin-1 range are stored 8-bit rather than 16-bit, which makes both sets of APIs equally fast.
<pfdietz> I have wanted lisps to use adaptive representations that use less space for Latin-1 strings (even if the type is formally (vector character)).
<Bike> i wrote a thing with lisp utf-8 strings to see if i could, and i could, but linear time random access kinda blows
<pjb> jmercouris: you write the C or foreign code?
<pjb> jmercouris: how do you use those strings in C? Don't you call some API expecting some specific encoding?
efm has quit [Ping timeout: 268 seconds]
efm has joined #lisp
<jmercouris> pjb: No, it is an optional void* user data for a callback
heisig has quit [Quit: Leaving]
<jmercouris> so, I get to write the callback, and then decode my own data I encoded
<jmercouris> that said, is there a function version of with-foreign-pointer-as-string?
<jmercouris> AKA, how to convert pointer to string?
<pjb> Then why do you want to pass a string? Just pass some random refnum.
<jmercouris> foreign-string-to-lisp?
<jmercouris> pjb: what is a refnum?
<jmercouris> I'm trying to pass a key to a hash table
<pjb> A reference number. A handle in Microsoft.
<pfdietz> I also want the adaptive representation to work well if the string is "almost" Latin-1.
<pjb> jmercouris: yes, a key to a hash-table. Just use a fixnum.
<pfdietz> (has a few characters that are not)
<jmercouris> pjb: fixnum would would work...
<jmercouris> either way, there would be no performance benefit to fixnum
<pjb> simplicity in the API.
<jmercouris> maybe, I was thinking about gensym'ing symbols in some package to store some data
<jmercouris> instead of using a hash table, not sure though
<jmercouris> I'm not sure how bad of a idea it is (defparameter x (make-hash-table)) in a top level library form...
<_death> you likely want defvar..
<jmercouris> ah, yes, defvar is what I meant
<jmercouris> the sentiment still stands
<jmercouris> pjb: find = slow
<jmercouris> pjb: it is simpler though
<jmercouris> there are many callbacks taking place here, and I want absolutely 0 performance penalty
<pjb> jmercouris: if you can manage the range of your refnums, you can use a vector instead of a hash-table.
<pjb> jmercouris: this is the advantage of using small integers as handles. Like unix file descriptors.
<jmercouris> ... hm now that is an interesting idea
<jmercouris> how to make pointer to integer...?
<_death> cffi:make-pointer
<_death> well, maybe you meant something else
<pjb> (cffi:pointer-address (cffi:make-pointer 42)) #| --> 42 |#
<_death> an integer need not have an address..
<jmercouris> Yes, I get that, but I'm expected to supply a pointer
<jmercouris> it is void* that I get to supply as user data
<pjb> (let ((object (make-hash-table))) (values object (cffi:make-pointer (read-from-string (com.informatimago.common-lisp.cesarum.utility:object-identity object))))) #| --> #<hash-table :test eql size 0/60 #x302002B1820D> ; #<A Foreign Pointer #x302002B1820D> |#
<_death> in theory some platforms may take issue with arbitrary integers as addresses
<Bike> you can use with-foreign-object to stack allocate an integer, if t hat's what you mean?
<pjb> (com.informatimago.common-lisp.cesarum.utility:object-identity (cons 'a 'd)) #| --> "#x302002B3E883" |#
<jmercouris> What does it mean to stack allocate an integer?
<jmercouris> allocate an integer on the stack?
<pjb> jmercouris: yes.
<Bike> well, yes.
<Bike> like an auto variable in C.
<pjb> jmercouris: works nicely for fixnum, less so for bignums.
montaropdf has quit [Quit: have a nice week-end.]
<jmercouris> _death: which platforms?
<jmercouris> you think I should actually make a pointer to an integer..?
<_death> it's unlikely that you want to stack allocate it.. since that pointer will likely be stashed somewhere and passed back at a different time
<pjb> _death: as long as you don't dereference them, it should be ok.
<_death> jmercouris: basically make-pointer will be ok.. what pjb said
<pjb> jmercouris: of course: (cffi:make-pointer (expt 2 100)) #| ERROR: The value 1267650600228229401496703205376 is not of the expected type (unsigned-byte 64). |#
<jmercouris> OK, then I won't stress about it
<jmercouris> that is quite a few... calls :-D
<_death> pjb: that's why I said in theory.. there are architectures that will care, but x86/amd64 are quite lenient
<_death> also, providing an actual lisp object's address would be worse, then you have to worry about pinning
<_death> but you could (cffi:foreign-alloc :char :count 0) I suppose
jmercouris has quit [Ping timeout: 260 seconds]
FreeBirdLjj has joined #lisp
gko_ has quit [Ping timeout: 240 seconds]
jayspeer has quit [Quit: ERC (IRC client for Emacs 26.3)]
ebzzry has quit [Ping timeout: 260 seconds]
xlei has quit [Ping timeout: 272 seconds]
jmercouris has joined #lisp
<jmercouris> pjb: I ended up going with the small list in the end
<jmercouris> pjb: I ended up going with the small list in the end
<jmercouris> _death: maybe I do that
<jmercouris> I see if it actually ends up being a problem
efm has quit [Remote host closed the connection]
FreeBirdLjj has quit [Remote host closed the connection]
<jmercouris> how to get function body from symbol OR lambda?
<jmercouris> I want the user to be able to invoke my function (defun my-fun (some-fun) ...) (my-fun (lambda (xyz) ...)) or (my-fun #'potato)
<jmercouris> I want to store the lambda or potato in some variable
<jmercouris> actually, specifically a slot of a struct
<beach> clhs funcall
<jmercouris> I know of funcall
<jmercouris> I want to save the value of the body
<jmercouris> so that I can invoke it at a later time
<beach> What "body"?
<jmercouris> you know, maybe I'm just saying nonsense here
<jmercouris> what I want to do is (make-my-struct :function my-fun) within the body
<jmercouris> will that work?
<jmercouris> I guess I don't see why it wouldnt
<beach> It will.
<beach> But there is no "body" involved here.
<jmercouris> Yeah, I'm sorry, I'm quite tired :-)
<jmercouris> I started overthinking this and thinking gibberish or so
efm has joined #lisp
<pjb> jmercouris: (you need to save the source yourself).
<pjb> clhs function-lambda-expression
<pjb> jmercouris: sinon ^
<pjb> s/sinon/otherwise/
<jmercouris> that is way more than I need to do :-D
<_death> another kind of image based development: https://i.imgur.com/piCKqJd.png the image tells how to develop
<pjb> jmercouris: if you want the function object, of course, just (symbol-function 'symbol) or (function fname).
<pjb> _death: :-)
jmercouris has quit [Ping timeout: 272 seconds]
prince1 has joined #lisp
davepdotorg has quit [Ping timeout: 245 seconds]
prince1 has quit [Ping timeout: 268 seconds]
EvW has quit [Ping timeout: 260 seconds]
v_m_v has quit [Remote host closed the connection]
v_m_v has joined #lisp
v_m_v has quit [Ping timeout: 240 seconds]
hhdave has quit [Quit: hhdave]
rtra has quit [Ping timeout: 272 seconds]
rtra has joined #lisp
cosimone has joined #lisp
scymtym has quit [Ping timeout: 245 seconds]
ebzzry has joined #lisp
Necktwi has joined #lisp
v88m has quit [Ping timeout: 246 seconds]
m00natic has quit [Remote host closed the connection]
iamFIREcracker has joined #lisp
buffergn0me has joined #lisp
ebzzry has quit [Read error: Connection reset by peer]
gigetoo has quit [Ping timeout: 240 seconds]
gigetoo has joined #lisp
iamFIREcracker has quit [Remote host closed the connection]
varjag has joined #lisp
slyrus__ has joined #lisp
rtra has quit [Ping timeout: 240 seconds]
iamFIREcracker has joined #lisp
slyrus_ has quit [Ping timeout: 240 seconds]
xlei has joined #lisp
iamFIREcracker has quit [Remote host closed the connection]
iamFIREcracker has joined #lisp
amerlyq has quit [Quit: amerlyq]
slyrus_ has joined #lisp
slyrus__ has quit [Ping timeout: 260 seconds]
rtra has joined #lisp
xlei has quit [Ping timeout: 265 seconds]
iamFIREcracker has quit [Remote host closed the connection]
iamFIREcracker has joined #lisp
jonatack has joined #lisp
xlei has joined #lisp
fengshaun_ is now known as fengshaun
sauvin has quit [Read error: Connection reset by peer]
emys has joined #lisp
v88m has joined #lisp
dddddd has joined #lisp
prince1 has joined #lisp
emys has quit [Ping timeout: 240 seconds]
prince1 has quit [Ping timeout: 260 seconds]
xlei has quit [Ping timeout: 260 seconds]
pierpal has joined #lisp
X-Scale` has joined #lisp
xlei has joined #lisp
X-Scale has quit [Ping timeout: 240 seconds]
X-Scale` is now known as X-Scale
rtra has quit [Ping timeout: 268 seconds]
ted_wroclaw has joined #lisp
pierpal has quit [Ping timeout: 265 seconds]
<ted_wroclaw> Hey guys. Is anyone going to the European Lisp Symposium?
rtra has joined #lisp
izh_ has joined #lisp
scymtym has joined #lisp
ted_wroclaw has quit [Read error: Connection reset by peer]
rpg has joined #lisp
<rpg> If someone around can set the topic, would you mind mentioning that I have just released ASDF 3.3.4, a bug fix release?
<Xach> rpg: that kind of thing is not put in the topic any more.
<Xach> But thank you for the news!
xantoz has quit [Quit: WeeChat 2.6]
<rpg> Xach: I'm afraid it's been a while since I spent much time here... Too busy!
<rpg> Xach: BTW, Mark E and I are going to have a conversation about how to improve the way ASDF and QL work together. I gather you talked about it at ELS.
<rpg> or ... no, I meant the SBCL party
<Xach> I have one main problem that I can't figure out
<Xach> And that's, as a third party, establishing some environment around the compilation of a system based on some property of the system, without interfering with any first-party stuff.
<Xach> so conventional methods are right out
stepnem_ has quit [Ping timeout: 272 seconds]
xantoz has joined #lisp
p_l changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | ASDF 3.3.4
<rpg> Xach: the key thing to remember is that ASDF is *not* hierarchical, so that wrapping PERFORM on, say, LOAD-OP, on the system will not work -- that will only wrap post-processing. I think Fare made a kind of clunky method for dealing with this. Let me have a quick look.
stepnem has joined #lisp
<rpg> Xach: There's an `around-compile-hook`
ggole has quit [Quit: Leaving]
Bike has quit [Quit: Lost terminal]
* rpg waits while the "your message to implementation development list awaits moderator approval" emails flood in. Would it really hurt so badly to add me to the accept list?
xantoz has quit [Quit: WeeChat 2.7]
xantoz has joined #lisp
pnp has joined #lisp
smokeink has quit [Remote host closed the connection]
ljavorsk has joined #lisp
smokeink has joined #lisp
smokeink has quit [Client Quit]
<Xach> rpg: i can't add methods
pierpal has joined #lisp
gigetoo has quit [Ping timeout: 240 seconds]
FennecCode has joined #lisp
cosimone has quit [Quit: Terminated!]
gigetoo has joined #lisp
<pfdietz> You could act like you can, though. I hear this is called "method acting".
dale_ has joined #lisp
dale_ is now known as dale
<jackdaniel> congrats on a new release
<Xach> pfdietz: vigorous boo
ljavorsk has quit [Ping timeout: 268 seconds]
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #lisp
pierpal has quit [Ping timeout: 240 seconds]
rtra has quit [Quit: WeeChat 2.3]
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
narimiran has quit [Ping timeout: 240 seconds]
buffergn0me has quit [Ping timeout: 240 seconds]
cosimone has joined #lisp
shifty has joined #lisp
z147 has joined #lisp
rpg has joined #lisp
<rpg> Xach: Sorry -- I was away and my laptop went to sleep. Are you still there.
<rpg> Reading the ASDF manual, this hook is something you use like a hook in emacs-lisp, rather than a generic function to which you add methods.
<rpg> If you are still there, I'll have a deeper look.
davr0s has joined #lisp
davr0s_ has joined #lisp
v88m has quit [Ping timeout: 265 seconds]
v88m has joined #lisp
v88m has quit [Read error: Connection reset by peer]
prince1 has joined #lisp
prince1 has quit [Ping timeout: 268 seconds]
pnp has quit [Remote host closed the connection]
<Xach> rpg: is it meant for system authors to use?
<rpg> Xach: Yes, it is. But using it correctly seems to assume that you know how `uiop:compile-file*` works and how the perform method interacts with it. That's why I was offering to help you navigate the issue. Also, I'd like to know for personal use and to give an example.
ebrasca has quit [Remote host closed the connection]
<Xach> rpg: i am not the system author. i am a third party (a system loader)
<Xach> i wannt to have verbose loading in some contexts and silent loading in others. the preference depends on a property of the system.
<rpg> Xach: I think one might be able to get that done by interfering with the around-compile-hook, but you might have to do some checking in there.
<Xach> I don't want to mess with system properties set up by a system author.
<rpg> I think you could write a method on AROUND-COMPILE-HOOK, but it would have to *return* an AFTER-COMPILE-HOOK, and one that would wrap around anything put there by the user.
<rpg> So probably an :AROUND method that would first CALL-NEXT-METHOD, catch the return, and then give back either your THUNK or your THUNK applied to the THUNK returned by CALL-NEXT-METHOD.
<Xach> What would the method specialize on?
<rpg> Xach: There are no :AROUND methods already there, so you could just handle any ASDF:COMPONENT, if you have a way to look at an arbitrary component (possibly by looking at its parent), and decide whether you want to meddle with it.
<Xach> Hmm
<Xach> rpg: I'll give that a try, thanks. I worry about clashes if someone else wants to do the same thing.
<Xach> not literally the same, but use the same gf for some purpose
<rpg> Xach: Yeah, I hear you about that. You'd be really busting the API, and doing a thing that no one just building a system should be doing, though.
shifty has quit [Ping timeout: 265 seconds]
<Xach> it sounds much more likely to do what i want than anything i've heard about before, so thank you very much, can't wait to mess with it.
<rpg> TBQH, I don't fully grok what this thunk is supposed to do. Reading the code, it looks like ASDF normally FUNCALL's compile-file*, and what you do is write a function that replaces FUNCALL, so setting up whatever context you want, and (probably) then calling FUNCALL. But I have never done this myself, so you'd have to take that with a grain of salt.
<rpg> Xach: Great. Please drop me a line and let me know how it goes. If it works for you, I'd like to learn from what you've done, and if it doesn't, I can help you figure out what's going wrong.
<Xach> rpg: the context is that i'd like to suppress a lot of output for quicklisp-provided systems, and don't suppress it for other systems, to get rid of the problem that your code has warnings and other stuff you don't know about.
gravicappa has quit [Ping timeout: 272 seconds]
<rpg> Just out of curiosity, how do you know when a system is provided by quicklisp and when not?
<Odin-> He looks at the list of things he has to build, I suppose.
* rpg does 3 Stooges eye-poke to Odin-
cosimone has quit [Quit: Quit.]
<Odin-> :D
v88m has joined #lisp
v88m has quit [Read error: Connection reset by peer]
karlosz has joined #lisp
<Shinmera> rpg: You can look at the system source directory and check if it's within ql's dist directory.
<rpg> Shinmera: woof. That's nasty.
<rpg> Probably something you would want to memoize, if that check has to be done for every operation x component pair.
<Xach> One easy way is to establish a dynamic table that is populated by the quicklisp system-definition search function as it returns things.
<Xach> since it does not use the asdf system search at all.
vhost- has joined #lisp
vhost- has joined #lisp
<rpg> Yes, that sounds better! I was trying to figure out if you could have a quicklisp-system-mixin, and use ensure-class and change-class. That would be simpler to integrate with method dispatch, but would probably involve considerable hair
<Xach> yes, and i don't to modify systems
vlatkoB has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
karlosz has quit [Quit: karlosz]
akoana has joined #lisp
cosimone has joined #lisp
izh_ has quit [Quit: Leaving]
shifty has joined #lisp
frodef has quit [Ping timeout: 240 seconds]
karlosz has joined #lisp
iamFIREcracker has quit [Ping timeout: 272 seconds]
karlosz has quit [Quit: karlosz]
rjnw has joined #lisp
akoana has left #lisp ["Leaving"]
drl has joined #lisp
drl has quit [Remote host closed the connection]
cjb has joined #lisp
karlosz has joined #lisp
pierpal has joined #lisp
prince1 has joined #lisp
LiamH has quit [Quit: Leaving.]
varjag has quit [Remote host closed the connection]
prince1 has quit [Ping timeout: 260 seconds]
varjag has joined #lisp
Inline has quit [Ping timeout: 272 seconds]
varjag has quit [Ping timeout: 268 seconds]
pierpal has quit [Ping timeout: 260 seconds]
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
lucasb has quit [Quit: Connection closed for inactivity]
EvW has joined #lisp