jackdaniel 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/> | offtopic --> #lispcafe
frost-lab has joined #lisp
luckless_ has joined #lisp
random-nick has quit [Ping timeout: 256 seconds]
ebrasca has quit [Remote host closed the connection]
jello_pudding has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
luckless_ has joined #lisp
kam1 has quit [Ping timeout: 246 seconds]
luckless_ has quit [Remote host closed the connection]
mbomba has joined #lisp
hiroaki has joined #lisp
jibanes has quit [Ping timeout: 256 seconds]
jibanes has joined #lisp
notzmv has joined #lisp
kaftejiman has quit [Remote host closed the connection]
luckless_ has joined #lisp
megalography has joined #lisp
kam1 has joined #lisp
mbomba has quit [Quit: WeeChat 3.0]
Oladon has quit [Quit: Leaving.]
charles` has joined #lisp
charles` has quit [Ping timeout: 260 seconds]
rgherdt has joined #lisp
lucasb has quit [Quit: Connection closed for inactivity]
matryoshka has quit [Quit: ZNC 1.8.2 - https://znc.in]
matryoshka has joined #lisp
matryoshka has quit [Remote host closed the connection]
matryoshka has joined #lisp
megalography has left #lisp [#lisp]
kam1 has quit [Ping timeout: 256 seconds]
jibanes has quit [Ping timeout: 246 seconds]
jibanes has joined #lisp
hiroaki has quit [Remote host closed the connection]
hiroaki has joined #lisp
rumbler31_ has quit [Ping timeout: 268 seconds]
rumbler31_ has joined #lisp
wxie has joined #lisp
Oladon has joined #lisp
rgherdt has quit [Ping timeout: 272 seconds]
luckless_ has quit [Ping timeout: 240 seconds]
akoana has left #lisp ["Leaving"]
cosimone has quit [Quit: cosimone]
toorevitimirp has joined #lisp
JessicaPurple has joined #lisp
charles` has joined #lisp
luckless_ has joined #lisp
varjag has quit [Ping timeout: 240 seconds]
galex-713 has quit [Ping timeout: 272 seconds]
chens has joined #lisp
JessicaPurple has quit [Quit: Leaving]
macdavid313 has joined #lisp
macdavid313 has quit [Remote host closed the connection]
galex-713 has joined #lisp
jibanes has quit [Ping timeout: 246 seconds]
EvW has quit [Ping timeout: 268 seconds]
jibanes has joined #lisp
pallas has quit [Ping timeout: 256 seconds]
wxie has quit [Ping timeout: 240 seconds]
dbotton has joined #lisp
wxie has joined #lisp
lowryder has quit [Ping timeout: 260 seconds]
lowryder has joined #lisp
miasuji has joined #lisp
Oladon has quit [Quit: Leaving.]
Jeanne-Kamikaze has quit [Ping timeout: 265 seconds]
xrash has quit [Remote host closed the connection]
jibanes has quit [Ping timeout: 240 seconds]
jibanes has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
dbotton has quit [Quit: Leaving]
jibanes has quit [Ping timeout: 256 seconds]
kam1 has joined #lisp
jibanes has joined #lisp
wxie has quit [Ping timeout: 256 seconds]
frost-lab has quit [Quit: Connection closed]
luckless_ has joined #lisp
zaquest has quit [Quit: Leaving]
jibanes has quit [Ping timeout: 240 seconds]
zaquest has joined #lisp
jibanes has joined #lisp
davisr has quit [Ping timeout: 256 seconds]
miasuji has quit [Ping timeout: 260 seconds]
Alfr has joined #lisp
Alfr_ has quit [Ping timeout: 260 seconds]
<beach> Good morning everyone!
<oni-on-ion> happy holiday(s) beach !
<beach> Thank you! You too. And everyone else.
<charles`> hi
thmprover has quit [Quit: Happy Holidays to all, and to all a good night.]
<beach> Hello charles`.
uniminin has joined #lisp
<pfdietz> FCGE would be a kind of Lisp virtualization?
<beach> That's a good analogy.
<beach> I invented them for two purposes. The most immediate one was bootstrapping. I needed a way to isolate SICL code from host code with the same names, for the purpose of bootstrapping.
<beach> The second purpose is one of security. I wanted it to be harder to have malware installed in your system if all you do is load some code.
<beach> By moving sensitive things like code generators to a separate first-class global environment, it becomes harder to violate the internal consistency of the system.
* beach apologizes for the dangling participle.
<pfdietz> I could use something like that for mutation testing, although I could also fork and do dangerous things in the child process.
FreeBirdLjj has joined #lisp
narimiran has joined #lisp
FreeBirdLjj has quit [Ping timeout: 264 seconds]
xrash has joined #lisp
<beach> So, "Santa" gave me phoe's book as a present, so thank you phoe for writing it.
* beach has this suspicion that "Santa" was really his (admittedly small) family in disguise.
<beach> I think the book is an important document. The introduction by Kent Pitman and the preface clearly show how the creators of every mainstream language invented after Multics PL/I got it wrong, which of course is simultaneously totally amazing and totally absurd.
natj212 has quit [Ping timeout: 260 seconds]
natj212 has joined #lisp
Mandus has quit [Ping timeout: 260 seconds]
Mandus has joined #lisp
seisatsu has quit [Ping timeout: 260 seconds]
seisatsu has joined #lisp
swflint has quit [Ping timeout: 260 seconds]
swflint_away has joined #lisp
swflint_away is now known as swflint
lotuseater has quit [Remote host closed the connection]
uniminin has quit [Quit: Leaving]
Bike has quit [Quit: Lost terminal]
<charles`> how come functions exist? why isn't everything a defmethod?
<beach> If every function was specified to be generic (which is probably what you mean), then there would be problems with what the AMOP calls "metastability". However, the standard allows for the system implementer to create a generic function in place of an ordinary function when that is practical.
<charles`> Does that mean that it could get confused which method to call?
<beach> It means that you would get into an infinite computation. For example, if you add a method to a generic function, you need to compute its discriminating function. But then, if you add a method to the function that computes discriminating functions, you immediate get into an infinite computation .
wxie has joined #lisp
<charles`> I see
<edgar-rft> charles`: the reason is just simply that functions do not need to dispatch their arguments and therefore are usually faster than methods, another reason is historical, Lisp had functions *before* it had methods.
<charles`> Excellent points
<beach> edgar-rft: I really don't want to discourage people from using generic functions on the basis of performance. Especially programmers with only superficial knowledge can take that kind of advice to be a rule, and that would encourage lesser solutions to many problems.
<beach> Furthermore, the performance problem is mainly due to the fact that existing Common Lisp implementations were created at a time when a memory access was as fast as a register access, so the techniques for generic dispatch used in current systems are not optimal. But we know how to do it better these days.
<charles`> My particular use case is that I want a subroutine called "close" but that is used by common-lisp:close for streams. I'm closing something else.
xrash has quit [Ping timeout: 240 seconds]
<beach> charles`: You would create your own package in which CLOSE is a different symbol. Then you make your "subroutine" a generic function as much as you like.
<charles`> but I also want to export it. if someone :use s my library then it would conflict right?
<beach> They should not :USE your package.
<charles`> It isn't designed to be :USE anyway
<charles`> but I am :USE :cl
<beach> Now that we have package-local nicknames, there is no need to :USE packages other than the COMMON-LISP package.
<beach> You can :USE the COMMON-LISP and :SHADOW symbol names that you want yourself.
<beach> I do that all the time.
<edgar-rft> :USE :CL is okay but :USE :RANDOM-PACKAGE can lead to problems
<charles`> as long as it dosn't export the symbol "close"
<beach> You can export the symbol CLOSE and you should if you want client code to use it.
jibanes has quit [Ping timeout: 240 seconds]
matryoshka has quit [Quit: ZNC 1.8.2 - https://znc.in]
matryoshka has joined #lisp
<charles`> I meant as long as the "random package" doesn't export close
<beach> charles`: It is a bad idea to :USE packages other than the COMMON-LISP package, as edgar-rft points out.
jibanes has joined #lisp
<beach> charles`: Imagine a future version of the random package that now exports one more symbol that clashes with a symbol with a similar name in a different package that you :USE. That means that the author of a random package can break your code.
<beach> Not a great scenario.
<charles`> Is there a way for asdf or quicklisp to ask for a specific version of a package?
iekfkk has quit [Ping timeout: 268 seconds]
rumbler31 has quit [Remote host closed the connection]
saganman has joined #lisp
<charles`> "Now that we have package-local nicknames..." is that because we can just make very short nicknames?
iekfkk has joined #lisp
<beach> Yes.
<charles`> pws
lotuseater has joined #lisp
rumbler31_ has quit [Ping timeout: 264 seconds]
skapata has quit [Ping timeout: 260 seconds]
jibanes has quit [Ping timeout: 264 seconds]
jibanes has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
birdwing has joined #lisp
luckless_ has joined #lisp
vidak` has quit [Read error: Connection reset by peer]
wooden has quit [Read error: Connection reset by peer]
vidak` has joined #lisp
CookE[] has joined #lisp
skapata has joined #lisp
jibanes has quit [Ping timeout: 260 seconds]
jibanes has joined #lisp
varjag has joined #lisp
a0 has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
varjag has quit [Ping timeout: 264 seconds]
CookE[] has quit [Ping timeout: 240 seconds]
Necktwi has quit [Ping timeout: 258 seconds]
waleee-cl has quit [Quit: Connection closed for inactivity]
luckless_ has joined #lisp
oxum_ has joined #lisp
oxum__ has joined #lisp
oxum has quit [Ping timeout: 240 seconds]
Inline has quit [Ping timeout: 264 seconds]
krid has quit [Ping timeout: 240 seconds]
oxum_ has quit [Ping timeout: 264 seconds]
Stanley00 has joined #lisp
a0 has quit [Remote host closed the connection]
eden has joined #lisp
steve88888888 has joined #lisp
jibanes has quit [Ping timeout: 272 seconds]
jibanes has joined #lisp
atomik has joined #lisp
Necktwi has joined #lisp
oxum has joined #lisp
fiddlerwoaroof has quit [Remote host closed the connection]
luckless_ has quit [Ping timeout: 240 seconds]
atomik_dog has quit [Ping timeout: 260 seconds]
oxum__ has quit [Ping timeout: 260 seconds]
luckless_ has joined #lisp
andreyorst` has joined #lisp
andreyorst` has quit [Remote host closed the connection]
andreyorst` has joined #lisp
chens has quit [Read error: Connection reset by peer]
nullman has joined #lisp
nullman has quit [Client Quit]
nullman has joined #lisp
skapata has quit [Remote host closed the connection]
wxie has quit [Ping timeout: 258 seconds]
eden has quit [Remote host closed the connection]
aartaka has joined #lisp
eden has joined #lisp
aartaka_d has joined #lisp
matryoshka has quit [Quit: ZNC 1.8.2 - https://znc.in]
matryoshka has joined #lisp
aartaka has quit [Ping timeout: 256 seconds]
aartaka_d has quit [Ping timeout: 240 seconds]
aartaka has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
Necktwi has quit [Remote host closed the connection]
gaqwas has joined #lisp
gaqwas has joined #lisp
gaqwas has quit [Remote host closed the connection]
fiddlerwoaroof has joined #lisp
luckless_ has joined #lisp
treflip has joined #lisp
rgherdt has joined #lisp
_whitelogger has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
<phoe> beach: thanks
<phoe> hope it serves you well
<phoe> charles`: (local-nicknames (#:p #:systems.raptor.very.long.package.name.by.phoe)) and then (p:foo ...)
<beach> I am sure it will.
luckless_ has joined #lisp
<phoe> hmmmmm
<phoe> I am working on a state machine right now
retropikzel has left #lisp ["Leaving"]
<phoe> and I want to be able to test individual states separately
<phoe> but I also want the final state machine to compile into a single big TAGBODY for efficiency
<phoe> does anyone know of a library that achieves these goals, or is it time for holiday phoe hacking?
sloanr has quit [Quit: ERC (IRC client for Emacs 27.1)]
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
hendursa1 has joined #lisp
hendursaga has quit [Ping timeout: 240 seconds]
eden has quit [Ping timeout: 240 seconds]
fiddlerwoaroof has quit [Quit: WeeChat 2.3]
fiddlerwoaroof has joined #lisp
imode has quit [Quit: WeeChat 2.9]
hnOsmium0001 has quit [Quit: Connection closed for inactivity]
<fiddlerwoaroof> Hi, everyone!
d4ryus has quit [Quit: WeeChat 2.9]
<phoe> heyyyy
<fiddlerwoaroof> I see bugging people about quicklisp stats actually had an effect :)
<fiddlerwoaroof> thanks phoe / Xach !
d4ryus has joined #lisp
<phoe> fiddlerwoaroof: :D
_whitelogger has joined #lisp
* phoe finds no such library
* phoe invokes quickproject:make-project
<v3ga> ok, so i just recently updated to sbcl 2.0.11 and used it for a few days. now for some reason it's not working on OSX. then on my linux box sly is acting odd. I can start sly up but in my lisp files it refuses to connect
varjag has joined #lisp
chens has quit [Remote host closed the connection]
Necktwi has joined #lisp
mankaev has quit [Read error: Connection reset by peer]
mankaev has joined #lisp
<v3ga> ok well thats one down...osx works again.
<phoe> what's the sly issue? why does it refuse to connect?
<phoe> what does the inferior-lisp buffer say?
liberliver has joined #lisp
gutter has joined #lisp
<v3ga> well inferior I have set to "/usr/bin/local/sbcl" which oddly did work last night.
<phoe> no, I mean the buffer
<v3ga> ahh one sec
<v3ga> phoe: yeah that works. 2.0.11 appears as it shoudl
<phoe> I mean, you said it refuses to connect
<phoe> what does the *inferior-lisp* buffer say when you try to execute sly?
<v3ga> so M-X sly...it opens a sly-mrepl but say if i try to evaluate an s-expr from my lisp file thats open it says "Not Connected."
<phoe> you keep on avoiding my question
<phoe> what does the *inferior-lisp* buffer say after you have done M-x sly?
<v3ga> oh it's still looking for slime-connection
aartaka has quit [Read error: Connection reset by peer]
aartaka has joined #lisp
<v3ga> and *inferior lisp* starts up and gives a repl and no further messaging. i should be able to work it out from here. I'm a bit unfamiliar with common lisp toolings in emacs but I at least see partially what it's doing now
<phoe> hmmmmmm.
<phoe> does it show that it's loading up sly? any messages there?
<v3ga> yeah. what's happening is my buffer that holds .lisp files still goes to slime-mode. I'm not seeing where I hook it in my init but i'll find it. I need to do some pruning anyways. Funny it throws a message asking if you'd like to remove the slime hook which I choose 'yes' but it's still coming up. I'll chalk this up to my horrid .init.el
<phoe> oooh
<phoe> so you have clashes between slime and sly!
<v3ga> yup. and oddly I have 100% of my slime related forms commented out. recompiled init.el.
<v3ga> weird...
<v3ga> i'll make it explicit...
gaqwas has joined #lisp
Stanley00 has quit [Quit: Nice weekend & Merry Christmas]
atomik has quit [Killed (adams.freenode.net (Nickname regained by services))]
Guest93519 has joined #lisp
<v3ga> phoe: interest, i had to completely remove slime. I'd had an issue...now that I remember. pulling sly from MELPA never worked on linux. I had to grab the git repo. on OSX it was installed in one shot.
<v3ga> interesting*
<phoe> I see
<v3ga> I see some people have issues with 'sly-autoloads'. it seems to be hit or miss. ah well, it's working now
hendursaga has joined #lisp
hendursa1 has quit [Ping timeout: 240 seconds]
waleee-cl has joined #lisp
Nilby has quit [Remote host closed the connection]
surabax has joined #lisp
<phoe> What are the best practices when defining new DOCUMENTATION types?
<phoe> I mean, defining the proper set of methods for DOCUMENTATION and where to store the docstrings.
<beach> The best thing is when you can associate the docstring with some object being documented. Then you don't have to worry about what happens when the object disappears, or is redefined.
<phoe> I'd like to have a similar API like CLHS DOCUMENTATION mentions for method combinations, so, three methods in total. My objects can be both named (via a global namespace) or anonymous.
<phoe> OK - in my case it means, storing it in a slot of the object in question.
Necktwi has quit [Ping timeout: 264 seconds]
X-Scale` has joined #lisp
X-Scale has quit [Ping timeout: 260 seconds]
X-Scale` is now known as X-Scale
vegansbane6 has quit [Quit: The Lounge - https://thelounge.chat]
<phoe> I have an issue with SETF DOCUMENTATION specialized on SYMBOL and MY-CLASS. If there is no instance of MY-CLASS globally named by SYMBOL, does the DOCUMENTATION protocol allow me to signal an error?
<phoe> Asking because (setf (documentation 'foo 'function) "haha") seems to succeed even though no #'FOO is globally defined.
cosimone has joined #lisp
<phoe> And this complicates things for me because I need to account for documentation for objects that don't (yet) exist.
<beach> Does it return "haha" when you do (documentation 'foo 'function) later?
<phoe> yes
<beach> Messy!
<phoe> ...on SBCL, that is
<phoe> not on CCL!
<beach> What does CCL do?
<phoe> NIL
<phoe> and it's conforming
<beach> But it still allows you to SETF it?
<phoe> oh wait a second...
<phoe> yes
<beach> Hmm.
<beach> Very messy!
<phoe> "An implementation is permitted to discard documentation strings at any time for implementation-defined reasons."
<phoe> here's my escape hatch!
<beach> Mhm.
<phoe> my SETF function can allow the programmer to "set" the documentation string for an unknown object by immediately discarding it.
<beach> I really think DOCUMENTATION is suboptimal in today's world.
<phoe> I agree, but it exists
<beach> But until we can agree upon something better, that's what we have.
aartaka_d has joined #lisp
aartaka has quit [Ping timeout: 256 seconds]
saganman is now known as blackadder
luni has joined #lisp
random-nick has joined #lisp
cosimone has quit [Quit: cosimone]
vegansbane6 has joined #lisp
luni has quit [Quit: Connection closed]
izh_ has joined #lisp
Necktwi has joined #lisp
Inline has joined #lisp
_whitelogger has joined #lisp
Lycurgus has joined #lisp
treflip` has joined #lisp
treflip has quit [Read error: Connection reset by peer]
treflip` has quit [Ping timeout: 246 seconds]
Kaisyu has joined #lisp
<phoe> clhs variable
<phoe> ...obviously
<phoe> I have just discovered another of the majestic symbols of the CL package that are not important enough to have their own CLHS page
* phoe shadows it and continues
orivej has quit [Ping timeout: 260 seconds]
narimiran has quit [Ping timeout: 240 seconds]
msk has joined #lisp
gko_ has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
luckless_ has joined #lisp
<varjag> slyrus: pr's there
v3ga has joined #lisp
heisig has joined #lisp
oni-on-ion has quit [Remote host closed the connection]
Oddity- has quit [Read error: Connection reset by peer]
izh_ has quit [Quit: Leaving]
Oddity has joined #lisp
notzmv has quit [Ping timeout: 246 seconds]
notzmv has joined #lisp
villanella has joined #lisp
<phoe> I just realized that I'm writing something akin to the GF/method machinery
<phoe> except instead of method objects, I'm adding states to the state machine
<phoe> or rather, state definitions - the states are defined up front
Lycurgus has quit [Quit: Exeunt]
EvW has joined #lisp
matryoshka has quit [Quit: ZNC 1.8.2 - https://znc.in]
<heisig> phoe: Sounds like you should use method combinations :)
hendursaga has quit [Quit: hendursaga]
hendursaga has joined #lisp
<phoe> heisig: I actually have a slightly different objective
<phoe> I want to write a class that describes a state machine, with state machine definitions, that can verify that all states are implemented, no unexpected state transitions occur, and finally compile the whole state machine into a big ole TAGBODY for efficiency
<phoe> mecombs alone won't give me this last point
<phoe> oh, and each state should be independently testable, too
<heisig> I see. Of course all this would be doable with the MOP, but I fully understand why you don't want to go down that route :)
<phoe> I mean, I *could* define my own GF class and my own method class and treat methods as state definitions and the GF as the whole state machine
<phoe> and, honestly, since my state machines are going to be funcallable and since I'm already writing ENSURE-STATE-MACHINE-USING-CLASS et al, I think that by the end I'll arrive at a point where my solution will be somewhat easily transferrable to standard GFs
<heisig> This is about your JSON parser, right?
<phoe> yes
<phoe> don't write JSON parsers, kids, they lead into the dark despair of MOP yak shaving
<heisig> MOP yaks are the best yaks :)
<phoe> said the guy specializing in MOP yaks
<heisig> :D
lucasb has joined #lisp
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
hiroaki has quit [Ping timeout: 272 seconds]
kenran has joined #lisp
krid has joined #lisp
<kenran> For someone kinda new to LISP (I've done some Clojure in the past), in what order would you recommend I read "On Lisp" and "Let Over Lamda"?
<beach> On Lisp is not for beginners.
<phoe> Practical Common Lisp -> On Lisp -> Let Over Lambda
<phoe> or
<kenran> I'm reading The Seasoned Schemer at the moment, as well as Practical Common Lisp, and plan to tackle one of the above right after.
<phoe> Graham's ANSI Common Lisp -> On Lisp -> Let Over Lambda
<beach> What about PAIP.
<phoe> but I recommend PCL over ANSI CL
luckless_ has quit [Ping timeout: 240 seconds]
<kenran> Thanks!
<beach> PCL is definitely better than ANSI Common Lisp since it talks about CLOS.
<beach> minion: Please tell kenran about PAIP.
<minion> kenran: PAIP: Paradigms of Artificial Intelligence Programming. More about Common Lisp than Artificial Intelligence. Now freely available at https://github.com/norvig/paip-lisp
<beach> kenran: That one is a great book as well.
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
<kenran> minion: Ah, nice. I knew what it is, but didn't know it was "open sourced"!
<minion> Ah, nice. I knew what it is, but didn't know it was "open sourced": An error was encountered in lookup: Parse error:URI "https://www.cliki.net/Ah%2C%20nice.%20I%20knew%20what%20it%20is%2C%20but%20didn't%20know%20it%20was%20\"open%20sourced\"?source" contains illegal character #\" at position 102..
contrapunctus has left #lisp ["Disconnected: closed"]
<beach> minion: Thanks!
<minion> you're welcome
hiroaki has joined #lisp
cantstanya has quit [Ping timeout: 240 seconds]
contrapunctus has joined #lisp
lowryder has quit [Ping timeout: 256 seconds]
cantstanya has joined #lisp
<ck_> what a world we live in, now even some characters are illegal
lowryder has joined #lisp
luckless_ has joined #lisp
Kaisyu has quit [Quit: Connection closed for inactivity]
pfdietz has quit [Ping timeout: 245 seconds]
perrier-jouet has quit [Quit: WeeChat 3.0]
EvW has quit [Ping timeout: 258 seconds]
perrier-jouet has joined #lisp
toorevitimirp has quit [Remote host closed the connection]
perrier-jouet has quit [Client Quit]
perrier-jouet has joined #lisp
Inline has quit [Ping timeout: 264 seconds]
luckless_ has quit [Ping timeout: 240 seconds]
<phoe> hmmmmmmmm
* phoe discovers the feud raging between :DEFAULT-INITARGS and SHARED-INITIALIZE
krid has quit [Remote host closed the connection]
davisr has joined #lisp
luckless_ has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
luckless_ has joined #lisp
birdwing has quit [Ping timeout: 272 seconds]
luckless_ has quit [Ping timeout: 240 seconds]
andreyorst` has quit [Quit: andreyorst`]
<p_l> A quick if non-trivial question: is there a way, assuming closer-mop present and given a superclass, to invoke a method on all instances of any subclass of said superclass? And gather them into a list
<_death> well, there's sb-vm:list-allocated-objects if you're using SBCL (assuming it's something you want to do at the REPL)
<beach> Wow, SBCL keeps a reference to each instance of a class?
gko_ has quit [Ping timeout: 260 seconds]
<_death> beach: no, it traverses memory like the gc
<beach> Oh, OK. Good!
aartaka_d is now known as aartaka
pfdietz has joined #lisp
narimiran has joined #lisp
<pfdietz> (equalp (split-sequence #\; input) (values output index))
<pfdietz> What
<p_l> Hmmm... On longer look, it seems my idea is a bit brain damaged, and shared allocation slot will be better
_jrjsmrtn has joined #lisp
__jrjsmrtn__ has quit [Ping timeout: 240 seconds]
<pfdietz> phoe: which json parser is yours? Or is this a new one?
Jeanne-Kamikaze has joined #lisp
<pfdietz> When I compared CL json parsers, jsown was by far the fastest. And in some applications the speed of the json parser dominated the run time.
<phoe> pfdietz: a new one; a quick hack version is at https://plaster.tymoon.eu/view/2212#2212 and it sports a TAGBODY that is way, WAY too large and non-unit-testable for my taste.
<phoe> I want to use a single tagbody for performance reasons and then tune everything else I can
<phoe> without sacrificing safety like jsown dows.
<phoe> dows.
<phoe> ....does.
<pfdietz> Interestingly, I wanted to get out a representation where attributes were keywords. Conversion of strings to keywords was a bottleneck, but it was greatly accelerated by short circuiting the common cases (for that json) with string-case.
<phoe> I use a hack where attributes are gensyms
<phoe> that should avoid memory leaks, too.
<phoe> and I optimize calls like (get object "foo") into EQ hash table accesses.
<pfdietz> In this case the application consuming the parsed json wanted keywords.
<phoe> yes, I see
Oladon has joined #lisp
skapata has joined #lisp
gutter has quit [Quit: Bye...]
gutter has joined #lisp
gutter has quit [Remote host closed the connection]
<_death> some years ago I used jsmn (a small json decoder in C) in some project.. that approach could be fast and nonconsing
<phoe> for such a project, I'd prefer to avoid FFI if possible
<_death> phoe: it would be easy to write it in Lisp
kayprish has joined #lisp
<_death> (the project was not..)
<phoe> _death: you mean, rewrite jsmn in Lisp?
<_death> yes
<phoe> I think I'm doing something equivalent, looking at https://github.com/zserge/jsmn/blob/master/jsmn.h
hiroaki has quit [Ping timeout: 260 seconds]
EvW has joined #lisp
<_death> again, note that jsmn doesn't cons
<phoe> wait a second... how does it store output then? it accepts a preallocated array of tokens?
gutter has joined #lisp
<_death> yes
<_death> and there's no string copying involved
<_death> it just uses indices into the original string
amb007 has quit [Ping timeout: 256 seconds]
amb007 has joined #lisp
kayprish has quit [Quit: Leaving]
<phoe> hmmmm
<phoe> I have no idea if that approach is viable in the Lisp world where people are used to manipulating objects that have identity, rather than using offsets into a string
luckless_ has joined #lisp
<_death> well, for that approach there are the myriad existing json libraries :)
<phoe> yes
<phoe> then that's an even more extreme approach than what I am working on
<_death> the project I used it for was a soft real-time thing, so I could've gone for allocating decoders.. but jsmn was small and nifty (could just copy over the header), and the json part was a tangential thing anyway
<phoe> yes, I see
luckless_ has quit [Ping timeout: 240 seconds]
<pfdietz> Offsets into a string? Displaced arrays.
<pfdietz> Granted, the header for those is allocated.
<slyrus> varjag: thanks! Will review after xmas.
hiroaki has joined #lisp
<_death> and that header might even be larger than the string ;)
<phoe> ^
<phoe> that's the worrying part :D
<_death> for the tokens you could let the user pass a vector and use vector-push-extend.. then the user can pre-allocate with a fill-pointer
<pfdietz> If one breaks the big vector into small strings, one can recognize when the small string is a base-string. Annoying when there's a non-base char somewhere in a large string, forcing an inefficient representation.
<pfdietz> I want an "almost base string" type that encodes such cases more efficiently.
luckless_ has joined #lisp
<varjag> slyrus: cool
<varjag> slyrus: there are two parts which are really unrelated: the thinning algo and the mod for ascii pnm writing
<varjag> found that i did the latter ca. 2017 and forgot to submit
jibanes has quit [Ping timeout: 246 seconds]
jibanes has joined #lisp
<hendursaga> Anyone know of a GraphViz dot *parser*? All I see are generators so far..
amb007 has quit [Read error: Connection reset by peer]
birdwing has joined #lisp
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
villanella has quit [Ping timeout: 246 seconds]
luckless_ has quit [Ping timeout: 240 seconds]
rogersm has joined #lisp
<phoe> Minor announcement: the IRC channel #clcs (short for Common Lisp Community Scribes) welcomes people interested in Common Lisp bookwriting - be it about sharing their own stuff, asking/performing reviews, or just chilling in general.
luckless_ has joined #lisp
<aeth> well, more than that, for offsets into strings/sequences, nearly every function has a start/end or start1/end1/start2/end2
<aeth> Not just displaced arrays.
<aeth> I'd argue anything idiomatic has that.
<phoe> yes, but still
<phoe> I can see the appeal, but I can see the costs, too
<phoe> pfdietz: almost base string... in-memory utf-8 strikes again
galex-713 has quit [Ping timeout: 272 seconds]
luckless_ has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
kam1 has quit [Ping timeout: 256 seconds]
luckless_ has joined #lisp
galex-713 has joined #lisp
charles` has quit [Ping timeout: 260 seconds]
mankaev has quit [Read error: Connection reset by peer]
mankaev has joined #lisp
kam1 has joined #lisp
<lonjil> One day I want to coax a CL implementation to be UTF-8, including from the user POV for strings.
luckless_ has quit [Ping timeout: 240 seconds]
<phoe> How does one efficiently fetch a Nth character of a UTF-8 string?
<phoe> (sorry about the non-Lisp question)
davisr_ has joined #lisp
xrash has joined #lisp
xrash has quit [Excess Flood]
hendursa1 has joined #lisp
<lonjil> phoe: You don't. However, in the land of Unicode, you can't fetch the Nth character from a UTF-32 string either.
hendursaga has quit [Ping timeout: 240 seconds]
<phoe> wait, why? I thought utf32 was secure against that because you have constant character size
<lonjil> You can fetch the Nth code point, but when you venture from European languages, often a character can be made of multiple code points.
<phoe> oooooh
<phoe> yes. I see.
xrash has joined #lisp
davisr has quit [Ping timeout: 256 seconds]
hendursaga has joined #lisp
<aeth> lonjil: but only SBCL with SB-UNICODE actually tries to implement the Unicode algorithms like e.g. sb-unicode:uppercase, which (1) has to apply to a string and not a character, (2) cannot round-trip, and (3) is locale-dependent
<aeth> (values (sb-unicode:uppercase "ß") (sb-unicode:uppercase "i") (sb-unicode:uppercase "i" :locale :tr) (sb-unicode:lowercase (sb-unicode:uppercase "ς")))
<lonjil> Most diacritics for the Latin alphabet in Unicode has pre-composed forms, such as 'ö'. You can also do 'o' followed by the '¨' combiner, but for Latin no-one bothers with this. But outside of Latin most scripts in Unicode don't have pre-composed forms, and things are done by composing multiple code points.
<aeth> The portable stuff like CHAR-UPCASE can't comply with Unicode because of the guarantees that the standard makes with characters...
hendursa1 has quit [Ping timeout: 240 seconds]
<lonjil> aeth: yes. Though for strings I don't think any of that really matters w.r.t. UTF-32 vs UTF-8 strings. Though doubtlessly UTF-8 strings would break a lot of stuff.
luckless_ has joined #lisp
Oladon has quit [Quit: Leaving.]
aartaka has quit [Ping timeout: 246 seconds]
davisr_ has quit [Ping timeout: 240 seconds]
<phoe> aeth: this reminds me
<phoe> this typed slot sort of thing
<phoe> have you ever published it as a separate library?
<aeth> phoe: no, it's in my backlog but it has been glacial because 2020 is 2020
<phoe> yes, I see
<aeth> like I'm moving at 1/5 pace or whatever :-p
<phoe> I can imagine, yes
cosimone has joined #lisp
<aeth> According to Gitlab I have 31 open issues and then I probably have another 40-60 or so I need to file.
Lord_of_Life_ has joined #lisp
iekfkk has quit [Read error: Connection reset by peer]
Lord_of_Life has quit [Ping timeout: 240 seconds]
Lord_of_Life_ is now known as Lord_of_Life
iekfkk has joined #lisp
<aeth> oh, hmm
luckless_ has quit [Ping timeout: 240 seconds]
<aeth> Does CFFI accept an integer everywhere where it also accepts a pointer?
<aeth> Because I can't make an array of CFFI:FOREIGN-POINTERs, but I can make an array of (UNSIGNED-BYTE 64)s... or even just constantly do nonconsing arithmetic on the (UNSIGNED-BYTE 64)s, at least in SBCL when it doesn't leave the scope of the function.
hnOsmium0001 has joined #lisp
<phoe> aeth: (cffi:make-pointer #x12345678)
luckless_ has joined #lisp
<aeth> phoe: my game loop is non-consing.
<phoe> oh. hmmm.
<aeth> It's mostly fine, I just need a very clever way to do the matrix pointers. Or I can just precalculate them and shove them in a giant, T-typed array like I currently do.
frgo has joined #lisp
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
stoneglass has joined #lisp
<aeth> I suppose if I really had to, I could cheat with assembly because I only guarantee that it's nonconsing with the x86-64 SBCL...
Inline has joined #lisp
bheesham_ has quit []
aartaka has joined #lisp
galex-713_ has joined #lisp
luni has joined #lisp
galex-713 has quit [Ping timeout: 272 seconds]
kaftejiman has joined #lisp
akoana has joined #lisp
<ane> is there a standard restart SLIME/SLY knows how to invoke for something like "use-value"? what sort of magic is needed there? it seems sometimes SLIME/SLY will ask for new values on certain kinds of restarts
luni has left #lisp [#lisp]
<phoe> swank:*sldb-quit-restart* is for the Q button
<phoe> as for USE-VALUE - it's no swank, AFAIK it's standard restart functionality
<phoe> AFAIK all swank/slime do is rebinding *query-io* into something that can accept values from the minibuffer
<ane> ok, thanks
andreyorst has joined #lisp
orivej has quit [Ping timeout: 256 seconds]
<phoe> as for a "standard restart", what do you mean?
<phoe> the swank/sly debugger uses the standard COMPUTE-RESTARTS function to get a list of all restarts
<ane> I meant there's some way swank recognizes that this restart is interactive
<ane> indeed, :interactive (lambda () (list (read *query-io*)) does the trick
<phoe> it doesn't need to recognize anything
<ane> yes, right, in fact it doesn't
<phoe> it simply calls INVOKE-RESTART-INTERACTIVELY
<ane> only the quit restart maybe?
<phoe> the Q-key restarts are probably not interactive
<phoe> ABORT restarts usually accept zero arguments
<phoe> so INVOKE-RESTART-INTERACTIVELY is the same as INVOKE-RESTART in that case
karlosz has quit [Remote host closed the connection]
birdwing has quit [Ping timeout: 268 seconds]
rogersm has quit [Quit: Leaving...]
varjag has quit [Read error: Connection reset by peer]
varjag has joined #lisp
aartaka has quit [Ping timeout: 240 seconds]
v3ga has quit [Ping timeout: 272 seconds]
ggoes has quit [Ping timeout: 246 seconds]
v3ga has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
luckless_ has joined #lisp
luckless_ has quit [Remote host closed the connection]
galex-713_ has quit [Ping timeout: 256 seconds]
luckless_ has joined #lisp
aartaka has joined #lisp
galex-713 has joined #lisp
dilated_dinosaur has quit [Ping timeout: 240 seconds]
andreyorst has quit [Ping timeout: 256 seconds]
luckless_ has quit [Ping timeout: 240 seconds]
andreyorst has joined #lisp
villanella has joined #lisp
luckless_ has joined #lisp
imode has joined #lisp
kenran has quit [Quit: leaving]
msk_ has joined #lisp
msk has quit [Read error: Connection reset by peer]
kam1 has quit [Ping timeout: 260 seconds]
EvW has quit [Ping timeout: 260 seconds]
karlosz has joined #lisp
EvW has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
dbotton has joined #lisp
luckless_ has joined #lisp
andreyorst has quit [Remote host closed the connection]
Jeanne-Kamikaze has quit [Ping timeout: 272 seconds]
jw4 has quit [Read error: Connection reset by peer]
jw4 has joined #lisp
gioyik has joined #lisp
narimiran has quit [Ping timeout: 265 seconds]
Jeanne-Kamikaze has joined #lisp
surabax_ has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
surabax__ has joined #lisp
andreyorst has joined #lisp
surabax has quit [Ping timeout: 246 seconds]
Jeanne-Kamikaze has quit [Ping timeout: 240 seconds]
luckless_ has joined #lisp
surabax_ has quit [Ping timeout: 240 seconds]
surabax_ has joined #lisp
kam1 has joined #lisp
surabax__ has quit [Ping timeout: 240 seconds]
surabax__ has joined #lisp
dbotton has quit [Quit: Leaving]
surabax has joined #lisp
surabax_ has quit [Ping timeout: 240 seconds]
Jeanne-Kamikaze has joined #lisp
surabax_ has joined #lisp
surabax__ has quit [Ping timeout: 240 seconds]
luckless_ has quit [Ping timeout: 240 seconds]
surabax_ has quit [Client Quit]
surabax has quit [Ping timeout: 272 seconds]
aartaka has quit [Ping timeout: 272 seconds]
heisig has quit [Ping timeout: 240 seconds]
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
aeth has quit [Ping timeout: 240 seconds]
aeth has joined #lisp
charles` has joined #lisp
luckless_ has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
charles` has quit [Ping timeout: 260 seconds]
hiroaki has quit [Ping timeout: 265 seconds]
drot has quit [Read error: Connection reset by peer]
bisickcor has joined #lisp
luckless_ has joined #lisp
iekfkk has quit [Ping timeout: 240 seconds]
oni-on-ion has joined #lisp
Jeanne-Kamikaze has quit [Quit: Leaving]
hiroaki has joined #lisp
davisr has joined #lisp
stoneglass has quit [Quit: stoneglass]
karlosz has quit [Quit: karlosz]
davisr has quit [Ping timeout: 256 seconds]
karlosz has joined #lisp
banjiewen_ has quit [Ping timeout: 268 seconds]
davisr has joined #lisp
kilimanjaro has quit [Ping timeout: 260 seconds]
banjiewen_ has joined #lisp
davisr_ has joined #lisp
gaqwas has quit [Ping timeout: 260 seconds]
davisr has quit [Ping timeout: 265 seconds]
kilimanjaro has joined #lisp
kam1 has quit [Ping timeout: 240 seconds]
matryoshka has joined #lisp
EvW has quit [Ping timeout: 268 seconds]
luckless_ has quit [Ping timeout: 240 seconds]
kam1 has joined #lisp
Oladon has joined #lisp
orivej has joined #lisp
EvW has joined #lisp
blackadder has quit [Ping timeout: 246 seconds]
perrier-jouet has quit [Quit: WeeChat 3.0]
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
luckless_ has joined #lisp
charles` has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
andreyorst has quit [Quit: WeeChat 3.0]
amb007 has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
phoe6 has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
luckless_ has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
villanella has quit [Ping timeout: 268 seconds]
ggoes has joined #lisp
fanta1 has quit [Remote host closed the connection]
mparlaktuna has joined #lisp
luckless_ has quit [Ping timeout: 240 seconds]
jello_pudding has quit [Ping timeout: 268 seconds]
bitmapper has quit [Quit: Connection closed for inactivity]
Lycurgus has joined #lisp
dilated_dinosaur has joined #lisp
jello_pudding has joined #lisp
perrier-jouet has joined #lisp
luckless_ has joined #lisp