<gendl>
stassats said it's because some concurrent code is setting stuff in a hash table. Probably I have to put a lock around whatever code is modifying that hash table.
<gendl>
But, how to track down what hash table it is?
<gendl>
and it happens if I do something like hit [Shift]-reload on a web page with several images, and it hits the server with a dozen or so requests simultaneously for all those image files.
<gendl>
I take it that things like (setf (gethash ... )) are not thread-safe in SBCL?
<gendl>
sorry i guess I should be posting this in #sbcl too..
<Bike>
setf gethash is not thread safe on any implementation i know of... unless the make-hash-table that made the table is marked as synchronized/locked/etc in some implementation dependent way
<gendl>
Bike: Thanks. I think I just found the offending hash table, by turning on debugging in aserve.
turona has quit [Quit: ...]
<gendl>
I forgot that by default aserve traps errors, prints them, and continues on its merry way without going into the debugger. Now I got a real debugger and I see a recognizable hash table from aserve being fiddled with in the backtrace... diving into it...
pilne has joined #lisp
<Bike>
on sbcl it's :synchronized t, apparently
krid has quit [Ping timeout: 260 seconds]
MerlinTheWizard has quit [Ping timeout: 244 seconds]
SGASAU has quit [Remote host closed the connection]
<gendl>
Bike: Yay! that seems to fix it!
<Bike>
cool.
SGASAU has joined #lisp
<gendl>
it's handling a few dozen simultaneous requests, anyway.
krid has joined #lisp
<gendl>
it's not really the requests, it's that aserve is publishing files on the fly under the auspices of a `publish-directory` -- so it just accesses that hash table the first time the files are accessed after server startup.
<gendl>
but if a page is containing dozens of little images then it's hitting the hash table simultaneously with all those
<gendl>
i'm not sure why it doesn't crash Allegro or CCL though.
<gendl>
or LW
<gendl>
maybe they do have synchronous hash tables by default? Or maybe I've just been lucky.
<Bike>
allegro docs don't seem to mention thread safety.
<gendl>
now i have to figure out how to make the fix without touching aserve sources where that `make-hash-table` lives, as is our directive -- trying to make this work with pristine aserve sources.
<gendl>
maybe SBCL is doing a safety check which the other impls aren't doing - it seems it's auditing hash-table-count somehow
<gendl>
i don't think anything is accessing the same hash table slots at the same time -- it's just that the count might be fleetingly inconsistent - and somehow SBCL is picking that up and throwing an error.
<gendl>
anyway at least i'm happy that the crashes themselves are not a big mystery anymore -- thanks!
<gendl>
btw we met in London right?
<Bike>
me? i've never been to london.
<gendl>
ok sorry i have you confused. London ELS (2015?) i thought I met "bike" from here. but maybe was another nick from here.
sabrac has joined #lisp
Fenix has quit [Remote host closed the connection]
Fenix has joined #lisp
turona has joined #lisp
Fenix has quit [Read error: No route to host]
schjetne has joined #lisp
jprajzne has quit [Quit: jprajzne]
sjl has quit [Quit: WeeChat 2.2-dev]
ahungry has joined #lisp
quazimodo has joined #lisp
hiroaki has quit [Ping timeout: 246 seconds]
keep_learning has quit [Quit: This computer has gone to sleep]
keep_learning has joined #lisp
MerlinTheWizard has joined #lisp
bitmapper has quit [Ping timeout: 265 seconds]
dddddd has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 240 seconds]
shifty has joined #lisp
hiroaki has joined #lisp
shifty has quit [Ping timeout: 246 seconds]
zaquest has quit [Quit: Leaving]
torbo has joined #lisp
zaquest has joined #lisp
mono has joined #lisp
monokrom has quit [Ping timeout: 256 seconds]
Nilby has quit [Read error: Connection reset by peer]
penguwin has quit [Quit: NO CARRIER]
penguwin has joined #lisp
orivej has joined #lisp
pilne has quit [Quit: Tis but a scratch]
penguwin has quit [Quit: NO CARRIER]
penguwin has joined #lisp
loli has quit [Quit: WeeChat 2.7.1]
stoneglass has quit [Quit: stoneglass]
loli has joined #lisp
turona has quit [Ping timeout: 272 seconds]
turona has joined #lisp
<beach>
Good morning everyone!
torbo has quit [Remote host closed the connection]
prefixt has quit [Ping timeout: 260 seconds]
prefixt has joined #lisp
prefixt has quit [Changing host]
prefixt has joined #lisp
anlsh has joined #lisp
<anlsh>
Is there a portable condition for indexing an array out of bounds? I get an sb-int:array-invalid-index-error but that seems sbcl-specific
<Bike>
i don't think so. you can check beforehand with array-in-bounds-p.
<aeth>
If only there was a portability library for things like this (if that's even possible)
<edgar-rft>
let's name it trivial-things-like-this
<aeth>
no, it needs to be trivial-array-invalid-index-error
<edgar-rft>
what kind of restarts would it offer?
<aeth>
Hmm, it would be tricky/impossible to implement even with a wrapper around AREF because in ECL (aref (list) 5) and (aref (make-array 5) 5) are both SIMPLE-TYPE-ERRORs.
<aeth>
Well, I mean, without resorting to the (probably) performance-destroying ARRAY-IN-BOUNDS-P
ahungry has quit [Remote host closed the connection]
<buffergn0me>
This sounds like a CDR
<buffergn0me>
Also it would probably be pretty easy to patch ECL
<phadthai>
I think that ECL will silently refuse to access an array out of bounds without warning or error when compiled with a high optimization level (at least it used to), so there's probably no other portable way than array-in-bounds-p (or to make sure the array is large enough)
<phadthai>
(or other custom checks)
<buffergn0me>
Well that is true for a lot of other checks, in most CL compilers
<phadthai>
s/access/write to/
Oladon has joined #lisp
<phadthai>
and ECL itself has no idea what other code under does, i.e. one can make it call write(2) on the buffer of a vector of course
<phadthai>
or read(2) etc
red-dot has joined #lisp
<phadthai>
so programmer judgment always necessary
<phadthai>
and in typical code where arrays must grow, user code tracks itself its size and ensures to grow it
Bike has quit [Quit: Lost terminal]
anlsh has quit [Remote host closed the connection]
dmiles has quit [Read error: Connection reset by peer]
logicmoo has joined #lisp
jruiz has quit [Ping timeout: 240 seconds]
zmt00 has joined #lisp
zmt01 has quit [Ping timeout: 240 seconds]
schjetne` has joined #lisp
keep_learning has quit [Ping timeout: 260 seconds]
gigetoo has quit [Ping timeout: 260 seconds]
acolarh has quit [Ping timeout: 260 seconds]
ck_ has quit [Ping timeout: 260 seconds]
ck_ has joined #lisp
schjetne has quit [Ping timeout: 260 seconds]
Bourne has quit [Ping timeout: 260 seconds]
keep_learning has joined #lisp
gigetoo has joined #lisp
acolarh has joined #lisp
zooey_ has joined #lisp
zooey has quit [Ping timeout: 240 seconds]
shangul has quit [Remote host closed the connection]
shangul has joined #lisp
buffergn0me has quit [Ping timeout: 240 seconds]
narimiran has joined #lisp
wooden has joined #lisp
vlatkoB has joined #lisp
zooey_ is now known as zooey
krid has quit [Ping timeout: 264 seconds]
MerlinTheWizard has quit [Ping timeout: 240 seconds]
elflng_ has joined #lisp
elflng has quit [Read error: No route to host]
dxtr has quit [Ping timeout: 256 seconds]
Oladon has quit [Quit: Leaving.]
orivej has quit [Ping timeout: 260 seconds]
patlv has quit [Quit: patlv]
Bourne has joined #lisp
shangul has quit [Remote host closed the connection]
logicmoo is now known as dmiles
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
MerlinTheWizard has joined #lisp
<jackdaniel>
adding appropriate condition should be easy (and call it instead of the simple error), please make a ticket on gitlab
<jackdaniel>
s/call/signal/
<jackdaniel>
boundary checks are skipped only on extreme optimization settings like speed 3 debugging 0
red-dot has quit [Read error: Connection reset by peer]
red-dot has joined #lisp
gravicappa has joined #lisp
JohnMS_WORK has joined #lisp
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
souron_the_evil has joined #lisp
jruiz has joined #lisp
jruiz has quit [Ping timeout: 244 seconds]
rgherdt has joined #lisp
_paul0 has joined #lisp
<aeth>
hmm... Is there a way to have an efficient trivial-foo on top of the condition system if the conditions aren't exactly the same name?
paul0 has quit [Ping timeout: 265 seconds]
renzhi_ has joined #lisp
renzhi has quit [Ping timeout: 246 seconds]
<aeth>
we might actually have a new trivial-foo out of this after all
zooey has quit [Ping timeout: 240 seconds]
<phoe>
aeth: yes, deftype with reader conditionals
CrazyEddy has quit [Remote host closed the connection]
vibs29 has joined #lisp
<aeth>
phoe: so as long as we can convince implementors to use distinct conditions for things like array indices, we can make a portability library over it?
fbmnds has joined #lisp
<phoe>
wait a second...
<phoe>
kind-of
<phoe>
you can use the deftype in handlers
<phoe>
but not for instantiation
<beach>
Wouldn't you just handle the implementation-specific condition and signal one that is specific to the trivial-??? library?
<phoe>
beach: that would mean that you need two handlers, one for the implementation-specific condition, and another for the trivial-array-out-of-bounds condition
<beach>
One would be inside the trivial-??? library, no?
<beach>
If so, what is the problem with that?
<phoe>
I don't yet understand, what would be the interface of that library?
<phoe>
a custom AREF that adds a handler around the array access?
<beach>
(with-trivial-??? (aref ...))
<phoe>
oh, sure, that can be done
<phoe>
that'll require users to wrap all of their array accesors in a with-trivial-??? though - it's cumbersome
CrazyEddy has joined #lisp
<beach>
But yeah, that would be prohibitive for single calls to AREF.
<phoe>
and error prone, unless one defines their own AREF
<beach>
Sure, yes.
<aeth>
there are a few others that would be good to handle here, like DESTRUCTURING-BIND
random-nick has joined #lisp
<aeth>
and people can probably think of a few more that people want to handle but can't
milanj has quit [Quit: This computer has gone to sleep]
elflng_ is now known as elflng
katco has quit [Quit: killed]
unl0ckd has quit [Quit: killed]
no-defun-allowed has quit [Quit: killed]
clintm[m] has quit [Quit: killed]
LdBeth has quit [Quit: killed]
dalz has quit [Quit: killed]
amnesic[m] has quit [Quit: killed]
liambrown has quit [Quit: killed]
Cairn[m] has quit [Quit: killed]
mhitchman[m] has quit [Quit: killed]
Gnuxie[m] has quit [Quit: killed]
justache has quit [Max SendQ exceeded]
infra_red[m] has quit [Quit: killed]
Jachy has quit [Quit: killed]
Davd[m] has quit [Quit: killed]
Necktwi has joined #lisp
justache has joined #lisp
Guest35617 has quit [Ping timeout: 246 seconds]
Krystof has quit [Ping timeout: 264 seconds]
femi has quit [Ping timeout: 264 seconds]
Guest35617 has joined #lisp
turona has quit [Ping timeout: 272 seconds]
femi has joined #lisp
turona has joined #lisp
vivit has quit [Ping timeout: 258 seconds]
dalz has joined #lisp
orivej has joined #lisp
prefixt has quit [Ping timeout: 240 seconds]
rgherdt has left #lisp ["Leaving"]
cosimone has joined #lisp
prefixt has joined #lisp
prefixt has quit [Changing host]
prefixt has joined #lisp
twelvemonkeys has quit [Ping timeout: 260 seconds]
<boeg>
Is there a library that has utilities for things like taking a string and making it url safe?
<jackdaniel>
what is an url safe string?
<jdz>
There's drakma:url-encode, most probably cl-who or other HTML generation libraries have something.
<Shinmera>
It's called URL encoding and is a pretty trivial single function.
<boeg>
jdz: thanks, ill check it out
adlai has joined #lisp
<boeg>
jackdaniel: its obviously a string thats safe for using in urls ¯\_(ツ)_/¯
<boeg>
Shinmera: indeed!
<Shinmera>
not that obvious.
<jackdaniel>
it still doesn't make sense to me, but I'll stop at that
<adlai>
Xach: I have not previously received this specific complaint, however, it does weigh upon my mind: a few of "scalpl" project's ASDF systems perform external http requests, at load-time. problem?
amnesic[m] has joined #lisp
unl0ckd has joined #lisp
mhitchman[m] has joined #lisp
no-defun-allowed has joined #lisp
infra_red[m] has joined #lisp
DavdL[m] has joined #lisp
Cairn[m] has joined #lisp
LdBeth has joined #lisp
liambrown has joined #lisp
katco has joined #lisp
Jachy has joined #lisp
Gnuxie[m] has joined #lisp
clintm[m] has joined #lisp
<boeg>
if you want to be pedantic, it's obviously not obvious, but I think it's easy to infer a meaning from the same statement i gave
<boeg>
simple statement*
<flip214>
adlai: that's a bad thing, right
<jackdaniel>
what are quantum particles? well, obviously that are particles, which are quantum, dummy!
<adlai>
it's not harmful to operation of the program, although it could cause undue headaches to the distributor
twelvemonkeys has joined #lisp
<beach>
I agree with jackdaniel. For one thing, I don't know the definition of "safe" in this context.
<jackdaniel>
adlai: doing external http requests during load time may be problematic for few reasons: one is security, there is no guarantee, that resources loaded won't become malicious at some point of time. another is the fact, that some installations are air-gapped
<mood>
It's just escaping characters for use in a URL. For example, if you want to use "/" in a path component, you encode it as %2F instead
<jackdaniel>
mood: thank you, that makes more sense
<beach>
mood: What is the justification for using the word "safe" for such a transformation?
* adlai
sighs and wonders what sort of overly-helpful airgap could possibly think that forwarding such requests could be a good idea
<adlai>
the primary reason for doing requests at load-time is that there are APIs that change at a frequency significantly lower than the lifetime of an installation
<no-defun-allowed>
beach: It's "safe" in the sense that it can't break HTML syntax.
toorevitimirp has joined #lisp
<beach>
no-defun-allowed: Thanks!
<jdz>
adlai: I wonder why the requests are not done in a setup or initialization function?
<mood>
beach: Encoding a string in that way allows it to be inserted into a URL without invoking the special meaning of certain characters.
<mood>
no-defun-allowed: That's not really correct. URLs and HTML are unrelated, and a & would still need to be escaped for use in HTML
<beach>
Thanks. I think I understand.
<no-defun-allowed>
Suppose I have the string "foo<p>bar" and just put it between <b>...</b>; then I would get <b>foo<p>bar</b>. That's not correct; but it's very bad if that string encodes some JavaScript program.
<no-defun-allowed>
Oh, we're talking about URLs. My bad.
<phoe>
still, injection is possible in URLs as well; the idea is similar, just the encoding differs
<boeg>
exact
<boeg>
beach, jackdaniel: i don't think there is anything to agree upon - I didn't provide more details, because they were not needed. Sufficient advice arrived swiftly, as I suspected, because it's a task that's used in a lot of places - I have done similar things in a lot of other languages, and suspected it would be easy to find a usable answer, which it was. If I was working on a quantum competer and needed an answer fitting my
<boeg>
definition of a quantum particle, i would have gone into greater lengths with my question, alas i am not, although it would be exciting
<no-defun-allowed>
A better example would be that encoding the alist (("foo" . "&bar")) as a query string like ?foo=&bar has a different meaning to what was anticipated.
<boeg>
computer*
fbmnds has left #lisp [#lisp]
<adlai>
jdz: good question, i'll have to meditate upon the reasons why anyone other than I would have such problems anyway
nika has joined #lisp
<_death>
adlai: it may be a good idea to allow the user to choose the method of retrieval, for example to read from a file instead
q3d has joined #lisp
<jackdaniel>
boeg: things which are obvious to you are not obvious to others. if everyone would assume that their knowledge is a common knowledge, then nobody would answer any question. I've asked because I was curious, and it seems to me that your answer was at least little condescending
<adlai>
_death: thank you, that is a good suggestion
* adlai
is also wondering about this whole 'swagger' nonsense, that almost asks for yet another #.
add^_ has joined #lisp
<boeg>
jackdaniel: in regard to your first sentence, that is correct.
<Shinmera>
no-defun-allowed: It has nothing to do with HTML
<Shinmera>
ah fuck, was scrolled up
milanj has joined #lisp
<jackdaniel>
I like to think that other sentences were also correct ;)
marcoxa has joined #lisp
<marcoxa>
Hi
<beach>
Hello marcoxa.
<beach>
marcoxa: It looks like you are fairly new here. What brings you to #lisp?
<marcoxa>
The question is what brings me to IRC. I have been doing Lisp for a veeeeeeeeeeeeeeery long time.
<beach>
Great! Are you looking for a project to work on? I have plenty of suggestions.
<jackdaniel>
beach: marcoxa presented the proposal for unifying float handling in common lisp implementations, I'm sure he has also other projects going on based on looking at CDR's
<marcoxa>
beach I haveplenty of suggestions :)
<beach>
Got it.
<marcoxa>
:)
<phoe>
oooh, it's you! hello, glad to have you around
<beach>
Oh, you are Marco Antoniotti?
* jackdaniel
tried to communicate that without spelling out names :)
<aeth>
What would unified float handling be? IEEE short-, single-, and double-float? And then what for long-float? Or am I way off?
<jackdaniel>
aeth: more like: what should happen when you add 1.0 to nan
<Shinmera>
I see someone didn't attend ELS
<marcoxa>
Yep. I figured out that by not hanging out here I was missing out a lot. So I am exploiting a lull in my day job and using ERC to lounge around.
<phoe>
^
<aeth>
jackdaniel: ah
<beach>
marcoxa: You are right about the missing-out part.
<beach>
I keep telling Didier Verna and Jim Newton that.
<marcoxa>
Yep.
<no-defun-allowed>
Shinmera: Indeed it does not.
<White_Flame>
what, are you saying comp.lang.lisp isn't the pinnacle of Lisp-oriented discussion?
* jackdaniel
have never joined usenet
<jackdaniel>
but I saw archived emails with plenty of fucks and personal insults
* White_Flame
throws a big "/s" in the air
<marcoxa>
Coming to the LIA Rabbit Hole I spoke about at ELS. If anybody is interested I can give access to the repository that contains the extremely raough draft of the LIA/CL spec. Also, now that I got the hang of this thing, I could set up a specialized channel on IRC. What do you think?
<jackdaniel>
I'd be interested in having access to the repository. at the very least I could make a pull request which adds missing information about ECL.
<phoe>
hmmm, easye would likely want to do the same regarding ABCL
<jackdaniel>
if you want to create a channel, I would suggest making it more general than LIA/CL, i.e #cdr, so other issues common for cl implementers could be discussed there
<phoe>
I would join #cdf
<phoe>
s/cdf/cdr/
<marcoxa>
jackdaniel I think two channels would be in order. One thing is the CDR discussions, the discussion on the LIA spec is going to be quite detailed and it will require some form of consensu making. Remember that LW and Franz should come onboard.
<jackdaniel>
my point is that making too many channels would only impact the membership
<jackdaniel>
it is not that people would chat about cdr proposals all day long
<marcoxa>
Sorry guys, I have to leave for a couple of hours. Our fridge is empty :) Send me an email if you want access to the repo.
<phoe>
yes, I kinda wonder if there will be enough volume for a separate IRC channel
<jackdaniel>
and your email is? :)
<phoe>
marcoxa: bon appetit and good luck hunting
<marcoxa>
marco dot antoniotti at unimib.it will do. Ciao
<jackdaniel>
thanks, see you
marcoxa has quit [Quit: Lunch time.]
emys has joined #lisp
<no-defun-allowed>
Perhaps this is way too rude, but why the hell do some published libraries (declare (debug 0))? Are they trying to save the last few kilobytes that having lambda lists uses?
<jackdaniel>
having debug information may also influence a performance
<_death>
no-defun-allowed: maybe it's a claim of quality.. the code is perfect, no need for debugging
<jackdaniel>
usually optimization on/off is a function of speed/debug options
<jackdaniel>
i.e ecl pushes debugging frames onto the frame stack when the function is called
<no-defun-allowed>
Well, (debug 1) is the "alternative" here. That doesn't do much more, does it?
<edgar-rft>
no-defun-allowed: (declare (debug 0)) means they are not interested in seeing *your* bugs :-)
<jackdaniel>
well, if you have debug 0, ecl does not push said frames
<jackdaniel>
if you have debug 1, it does!
<no-defun-allowed>
Right.
<phadthai>
a mailing list would likely be better than an irc channel for CDR work (if it doesn't already exist)
<flip214>
not directly, but that link came up in one of his replies
<beach>
Oh, I guess I even had some exchanges with him.
* adlai
wonders how long you gotta incubate an ulcer until it begins to tell you who's got good ideas
turona has joined #lisp
<beach>
adlai: What would the "ulcer" be in this case?
orivej has quit [Ping timeout: 246 seconds]
Inline has joined #lisp
Josh_2 has joined #lisp
<adlai>
unless i've been suffering from pervasive disinformation, Erik Naggum died of worrying too much about how to educate people to pick up his mantle after he was gone
<beach>
Oh, I see.
<Bike>
well, he died of ulcerative collitis, which is pretty nasty
sjl_ has joined #lisp
orivej has joined #lisp
* adlai
refrains from further discussion of the subject, at least until better understanding of the various literatures
emacsomancer has quit [Read error: Connection reset by peer]
emacsomancer has joined #lisp
<_death>
the treatment of UC inflammations can be very nasty as well
cosimone has quit [Quit: Quit.]
entel has joined #lisp
cosimone has joined #lisp
MerlinTheWizard has joined #lisp
bitmapper has joined #lisp
gabiruh has joined #lisp
theseb has joined #lisp
<theseb>
I asked yesterday why macros must be defined in the toplevel.....but couldn't you define them anywhere and form a closure? i.e. just save the local environment with the macros and drag it around?
<phoe>
theseb: you can
<theseb>
phoe: oh good
<theseb>
thanks
<phoe>
that's a unique way of using them though
<phoe>
not many people do that
<jdz>
After all, a macro is just a function.
<beach>
theseb: For example (let ((x 0)) (defmacro m () (incf x)))
<theseb>
properly in other than top-level contexts". At least one implementation
<theseb>
has interpreted this to mean that it is permissible to simply refuse
<theseb>
to compile defining macros that do not appear at top-level"
<beach>
theseb: The file compiler is limited in what it can represent in a FASL file, so there are limitations.
<phoe>
theseb: issues aren't a normative part of the standard. This text relates to pre-ANSI CL Lisp implementations.
<phoe>
this issue, also, explicitly permits for macros to be defined not in toplevel; see the "Proposal" part.
jonatack has quit [Ping timeout: 240 seconds]
<Bike>
it's a quotation from Common Lisp the Language, even, which is definitely not normative
jonatack has joined #lisp
jprajzne has quit [Quit: Leaving.]
xallad has joined #lisp
xallad has left #lisp [#lisp]
frgo_ has quit []
Cymew has quit [Ping timeout: 240 seconds]
gabiruh has quit [Ping timeout: 246 seconds]
frgo has joined #lisp
fbmnds has joined #lisp
fbmnds has left #lisp [#lisp]
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
IRC-Source_21 is now known as sam68
scymtym_ has joined #lisp
scymtym has quit [Ping timeout: 246 seconds]
fourier has joined #lisp
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
vivit has joined #lisp
efm has quit [Ping timeout: 246 seconds]
red-dot has joined #lisp
KDr21 has joined #lisp
femi has quit [Ping timeout: 256 seconds]
KDr2 has quit [Ping timeout: 260 seconds]
<pjb>
theseb: this is worse than what beach shown. (list (m) (m) (m)) could also return (2 4 6) or (12 7 2) or whatever actually.
femi has joined #lisp
<pjb>
AFAICR, there's no left-to-right order of macroexpansion enforced. What's sure, is that a macro can be expanded more than once. Therefore the state of a macro that mutates state can be very different from what you would expect.
Bourne has joined #lisp
scymtym_ has quit [Remote host closed the connection]
scymtym has joined #lisp
shifty has quit [Ping timeout: 260 seconds]
ruricolist has joined #lisp
gko has quit [Ping timeout: 256 seconds]
kiwi_60 has joined #lisp
kiwi_60 has quit [Client Quit]
xkapastel has joined #lisp
grabarz has joined #lisp
fourier has quit [Ping timeout: 240 seconds]
karlosz has joined #lisp
orivej has quit [Ping timeout: 246 seconds]
twelvemonkeys has quit [Ping timeout: 256 seconds]
<tinga>
Are intrusive lists something one sometimes uses in Common Lisp? A possible advantage (aside of saving an indirection / separate allocation) is that data items still have all of their methods directly, but implicitly know their parent (and/or child).
<Bike>
what's an intrusive list
<tinga>
A list whose cells are stored inside of another data structure.
<tinga>
Instead of (cons (foo 1) (cons (foo 2) nil)) you'd create the list as (foo 1 (foo 2 nil))
kpoeck has joined #lisp
<Bike>
oh, sure, people do that sometimes. only example i can think of is the dynamic environments in sicl, though i think beach changed that
<tinga>
(This is done very commonly in C, e.g. in the Linux Kernel.)
<Bike>
probably because if you don't have dynamic typing, a general list is more annoying to deal with
<tinga>
Or equally annoying, whereas intrusive lists are more efficient.
lalilulelo has quit [Quit: Leaving]
<tinga>
But I'm not really coming from the efficiency angle, but from an angle where you want to know the parent of an item while handling the item, so you don't have the surrounding cons to get to the parent;
<tinga>
and if I'd pass around the cons cell instead, it's annoying to extract the actual record each time I want to access it.
<pjb>
the big difference is that an element can belong only to one intrusive list, but it can belong to several lists.
<Bike>
and if you try (read-from-string (format nil "A~cA" #\IDEOGRAPHIC_SPACE)), you will get one symbol with a three character name
<Bike>
so the function is consistent with the implementation. implementation might not be consistent with japanese, though.
<Grue`>
given it's a html parser, i think this method might be detecting for actual whitespace in html files, in which case the implementation is wrong
<Grue`>
for unicode definition of whitespace, this test works: (cl-unicode:has-property char "WhiteSpace")
Kingsy has quit [Ping timeout: 240 seconds]
<phoe>
should closure-common depend on cl-unicode?
MerlinTheWizard has quit [Ping timeout: 240 seconds]
<_death>
is this the only case where it could use cl-unicode?
<phoe>
I honestly have no idea
<phoe>
I'm munching on its rune reading/writing logic
<_death>
many times introducing a dependency is overkill.. instead you can make it easy for the user to make the connection
<phoe>
yes, to make a toggle easy if cl-unicode is present
<_death>
maybe with a protocol or a function argument or a special.. extensibility as usual
eta has quit [Quit: Gateway shutdown]
MerlinTheWizard has joined #lisp
nika has quit []
<Grue`>
what is even closure-common? if it depends on cl-ppcre or cl-interpol like most things do, it already depends on cl-unicode
eta has joined #lisp
buffergn0me has quit [Ping timeout: 244 seconds]
<_death>
oh
<phoe>
Grue`: some code for the old closure browser
<phoe>
and no, it doesn't depend on them
denis__ has joined #lisp
fourier has quit [Ping timeout: 240 seconds]
izh_ has quit [Ping timeout: 246 seconds]
aeth has quit [Quit: Reconnecting]
aeth has joined #lisp
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
SGASAU` has quit [Remote host closed the connection]
rgherdt has joined #lisp
SGASAU` has joined #lisp
denis__ has quit [Quit: Leaving]
pilne has joined #lisp
pve has quit [Quit: leaving]
shifty has joined #lisp
Cymew has joined #lisp
narimiran has quit [Ping timeout: 260 seconds]
Cymew has quit [Ping timeout: 264 seconds]
SGASAU` has quit [Remote host closed the connection]
SGASAU` has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
<scymtym>
phoe: it is also for needed for cxml and xpath if i'm not mistaken
<phoe>
scymtym: yes
<scymtym>
(and i saw your issues but didn't have time (or a good solution) for a proper response)
<phoe>
yes, I guessed something like that; no problem
<scymtym>
huh, i seem to remember fixing SIMPLE-ROD at least once
jfrancis has quit [Read error: Connection reset by peer]
arbv has joined #lisp
westerns has quit [Quit: Connection closed for inactivity]
SGASAU` has quit [Quit: ERC (IRC client for Emacs 26.3)]
SGASAU has joined #lisp
ahungry has quit [Remote host closed the connection]
keep_learning has joined #lisp
krid has joined #lisp
Jesin has quit [Quit: Leaving]
MerlinTheWizard has joined #lisp
Aurora_v_kosmose has joined #lisp
ym has joined #lisp
sjl_ has quit [Ping timeout: 264 seconds]
<theseb>
newb closure question...since closures are "functions + environments"......does EVERY language with lexical scoping and regular functions have closures?
pjb has quit [Ping timeout: 272 seconds]
<aeth>
probably not, it needs to be built into the language
<aeth>
Closures allocate.
lxbarbosa has quit [Remote host closed the connection]
torbo has joined #lisp
MerlinTheWizard has quit [Ping timeout: 240 seconds]
Jesin has joined #lisp
Necktwi_ has joined #lisp
ayuce has quit [Remote host closed the connection]
Necktwi has quit [Ping timeout: 260 seconds]
MerlinTheWizard has joined #lisp
ayuce has joined #lisp
<theseb>
aeth: ok thanks
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
pjb has joined #lisp
duncan_ has quit [Ping timeout: 246 seconds]
dddddd has quit [Quit: dddddd]
gravicappa has quit [Ping timeout: 244 seconds]
reggie__ has quit [Remote host closed the connection]
decent-username has quit [Ping timeout: 246 seconds]
MerlinTheWizard has quit [Ping timeout: 240 seconds]
Oladon has joined #lisp
X-Scale` has joined #lisp
X-Scale has quit [Ping timeout: 256 seconds]
X-Scale` is now known as X-Scale
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
z147 has quit [Quit: z147]
MerlinTheWizard has joined #lisp
realtimdunbar has joined #lisp
realtimdunbar has quit [Client Quit]
random-nick has quit [Ping timeout: 256 seconds]
Lord_of_Life_ has joined #lisp
theseb has quit [Quit: Leaving]
Lord_of_Life has quit [Ping timeout: 246 seconds]
Lord_of_Life_ is now known as Lord_of_Life
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
westerns has joined #lisp
pjb has quit [Ping timeout: 246 seconds]
lxbarbosa has joined #lisp
souron_the_evil has joined #lisp
MerlinTheWizard has quit [Remote host closed the connection]