<hirez>
its so elegant looking in cl, lol. If anyone has any feedback on how I can make this more...canonical lisp I'd appreciate it
<beach>
(setf i (+ i 1)) is better expressed as (incf i)
<beach>
There is no need for a newline after LET* when the body lines are not long.
<hirez>
old habits from less refined languages die very hard
<hirez>
haha
<hirez>
okay cool
<hirez>
thank you :D
<beach>
Similarly, no need for a newline after a PROGN.
<hirez>
I see yeah, paredit cleans up nicely when I remove it.
<beach>
Instead of using PUSH and REVERSE, you can use COLLECT in LOOP.
<moon-child>
hirez: I think it would be cleaner to avoid the pushes in the body, as in (let* ... (stack (list (pop sorted) min))
<hirez>
Could I? I basically have to hold an element in `sorted` based on the `left` function. I will read up on collect.
<hirez>
Im not sure how I could avoid the push because the algorithm is dependent on a stack. I'd be interested in hearing how to avoid it.
<beach>
hirez: You would need an IF clause in the LOOP.
<hirez>
I see, I'll crack open the hyperspec again.
<hirez>
haha
<hirez>
ooh I see what you mean moon-child
<hirez>
sorry
<hirez>
yes indeed I can remove those
<moon-child>
(that's a matter of personal style, though; others would consider it more consistent to view the algorithm as a sequence of pushes onto an empty list)
v88m has joined #commonlisp
selwyn has quit [Read error: Connection reset by peer]
hendursa1 has joined #commonlisp
<dsk>
hirez: It's best not to try to destructively modify a literal object. That has undefined consequences.
<dsk>
You can cons up a fresh empty list with (list) instead of using '().
gty has joined #commonlisp
<beach>
dsk: That's not correct.
<moon-child>
(list) doesn't cons anything, it returns NIL
<dsk>
TIL :\
hendursaga has quit [Ping timeout: 252 seconds]
<beach>
dsk: '() is just the empty list, and nothing is destructively modified.
<moon-child>
'() is a perfectly fine, well-understood, and self-documenting way of producing an empty list
hendursa1 has quit [Remote host closed the connection]
<beach>
dsk: Even using PUSH after initializing to something like '(a b c) is fine.
<phoe>
you can't really mutate '() in Common Lisp
<beach>
PUSH does not modify the object.
<phoe>
like, ever
hendursa1 has joined #commonlisp
<phoe>
the only thing I can imagine is modifying the SYMBOL-NAME of NIL, but that has nothing to do with lists
<dsk>
I apologize, not sure where I got that idea.
contrapunctus has left #commonlisp [#commonlisp]
pok has quit [Quit: Reconnecting]
pok has joined #commonlisp
contrapunctus has joined #commonlisp
trocado has quit [Ping timeout: 250 seconds]
<dsk>
It seems obvious that (push thing stack) is equivalent (setf stack (cons thing stack)) so that wouldn't be an issue. But is (setf (car '(foo)) 'bar) okay?
<phoe>
very no
<phoe>
'(foo) is a literal list and therefore mutating it is UB
<phoe>
and mutating its CAR counts as mutating it
<dsk>
Ah, okay, good. Not *completely* losing it.
pok has quit [Quit: leaving]
pok has joined #commonlisp
ceblan has quit [Remote host closed the connection]
karlosz has joined #commonlisp
<phoe>
it's just that '(), treated as a list, has no components to mutate
<phoe>
so it can't be mutated
Duuqnd has joined #commonlisp
<dsk>
Right. Somehow my brain went on the fritz and told me that NIL is actually a cons, the CAR and CDR of which are both NIL.
contrapunctus has left #commonlisp [#commonlisp]
<dsk>
But I understand that while the CAR and CDR of NIL are both NIL, it is not a cons, though it is a list, and there's only one of it.
<phoe>
CAR and CDR of NIL are special cases
<phoe>
NIL isn't a cons, correct
<moon-child>
imagine if you could (setf (car nil) ...)
<dsk>
I feel like that may have been possible in some historical Lisp.
taiju has quit [Remote host closed the connection]
<Duuqnd>
If I wanted to have a reader macro that works in one file or one package (whichever is easier) how would I go about doing that?
<beach>
You put it in a specific readtable and you make sure that readtable is current in the file.
<phoe>
Duuqnd: named-readtables
<Duuqnd>
Thanks
esb has quit [Ping timeout: 272 seconds]
blizzard has joined #commonlisp
domovod has quit [Quit: WeeChat 3.1]
igemnace has quit [Quit: WeeChat 3.1]
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
contrapunctus has left #commonlisp [#commonlisp]
amk has quit [Remote host closed the connection]
amk has joined #commonlisp
waleee has joined #commonlisp
ivche has quit [Ping timeout: 250 seconds]
yewscion has joined #commonlisp
yewscion has quit [Remote host closed the connection]
yewscion has joined #commonlisp
ivche has joined #commonlisp
random-nick has joined #commonlisp
tyson2 has joined #commonlisp
Inline has quit [Ping timeout: 244 seconds]
yewscion has quit [Ping timeout: 272 seconds]
contrapunctus has joined #commonlisp
waleee has quit [Ping timeout: 244 seconds]
Oladon has quit [Quit: Leaving.]
waleee has joined #commonlisp
silasfox has quit [Ping timeout: 272 seconds]
ivche has quit [Ping timeout: 258 seconds]
yitzi has joined #commonlisp
esb has joined #commonlisp
Inline has joined #commonlisp
Inline has quit [Quit: Leaving]
Inline has joined #commonlisp
kevingal has joined #commonlisp
aeth has quit [Ping timeout: 244 seconds]
killsushi has quit [Quit: Leaving]
aeth has joined #commonlisp
srji has joined #commonlisp
franco has quit [Ping timeout: 272 seconds]
Duuqnd has quit [Ping timeout: 252 seconds]
tyson2 has quit [Ping timeout: 258 seconds]
Bike has joined #commonlisp
hhdave has quit [Ping timeout: 245 seconds]
v88m has quit [Ping timeout: 250 seconds]
yitzi has quit [Quit: Leaving]
caelie has joined #commonlisp
<jmercouris>
a way to get the file modified time using osicat?
<jmercouris>
or iolib
<jmercouris>
or anything really other than sbcl specific funtions
contrapunctus has left #commonlisp [#commonlisp]
<beach>
jmercouris: I don't have any plans to look at the code for Nyxt. I was just planning to use it.
<Bike>
does cl:file-write-date not work? i haven't used it myself
<jmercouris>
beach: perhaps a wise idea :-)
<jmercouris>
Bike: perfect, I did not know of its existence
<jmercouris>
thanks
<Bike>
great
<phoe>
TIL
<Josh_2>
There is a uiop:safe-file-write-date as well
hendursa1 has quit [Quit: hendursa1]
hendursaga has joined #commonlisp
contrapunctus has joined #commonlisp
aeth has quit [Ping timeout: 258 seconds]
tyson2 has joined #commonlisp
aeth has joined #commonlisp
<jmercouris>
I see, it is a little wrapper to avoid file sys errors
caelie has quit [Quit: WeeChat 3.0.1]
aeth has quit [Ping timeout: 258 seconds]
aeth has joined #commonlisp
<Inline>
why are some clx demos not rendering properly ?
<jmercouris>
hard to say, there could be a million reasons
<Inline>
some are pretty ok
<Inline>
bounce does not render anything
<Inline>
bouncing ball renders again
<Inline>
weird
<Fade>
I'm seeing a weird failure in Sly I haven't encountered before. When I press ',' to enter a REPL shortcut, the comma isn't captured and secondary shortcut entry doesn't pop up. I just get the raw comma in the REPL. have any of you encountered this?
<jmercouris>
Fade: perhaps the cursor has included an extra space?
<jmercouris>
and it is not obvious?
<Fade>
if there's a space it doesn't exist in any context that I can interact with it using the standard emacs machinery.
<jmercouris>
it has happend to me other times in other buffers that use the LUI library
<jmercouris>
or whatever it is called
<jmercouris>
it is a library used by circe and others to show like a prompt and history, like in the REPL
<Fade>
I'm not getting an error, I'm just not getting the command, so I'm not surehow to debug it.
<jackdaniel>
blizzard: minion decided that he stays with freenode :)
<jackdaniel>
(in fact: I don't know)
<beach>
blizzard: Never joined. You have to make do with Colleen.
<beach>
Colleen is not as witty as minion, but is pretty competent.
<jackdaniel>
Colleen: tell us something about yourself.
<Colleen>
us: Unknown command. Possible matches: 8, time, set, say, mop, roll, get, search, login, grant,
<beach>
blizzard: Are you looking for some particular functionality of minion?
<blizzard>
i was just curious beach :3
<blizzard>
iirc minion gets its wit from eliza's responses, right?
<Bike>
i think they're even more fixed than eliza.
<Fade>
hum. it only seems to be happening with the one system I'm trying to work on. my other systems behave normally. sly behaves normally prior to any nonefault systems being loaded.
blizzard is now known as derelict
<flip214>
jackdaniel: PR to move to libera submitted.
derelict has quit [Quit: WeeChat 3.1]
<flip214>
*move lisp-bots
derelict has joined #commonlisp
waleee has quit [Ping timeout: 272 seconds]
waleee has joined #commonlisp
gty has quit [*.net *.split]
gty has joined #commonlisp
contrapunctus has joined #commonlisp
katco has quit [Write error: Connection reset by peer]
Gnuxie has quit [Read error: Connection reset by peer]
dieggsy has quit [Read error: Connection reset by peer]
akanouras has quit [Remote host closed the connection]
loke[m] has quit [Remote host closed the connection]
loke[m] has joined #commonlisp
Gnuxie has joined #commonlisp
akanouras has joined #commonlisp
katco has joined #commonlisp
dieggsy has joined #commonlisp
yitzi has quit [Read error: Connection reset by peer]
yitzi has joined #commonlisp
amk has quit [Remote host closed the connection]
contrapunctus has left #commonlisp [#commonlisp]
Cymew has quit [Ping timeout: 250 seconds]
<Fade>
well, for posterity, the answer is loading the system :clog will do some violence to your Sly REPL
amk has joined #commonlisp
frgo has quit [Ping timeout: 272 seconds]
dsk has quit [Ping timeout: 252 seconds]
contrapunctus has joined #commonlisp
mindCrime_ has joined #commonlisp
ec has joined #commonlisp
<Josh_2>
Hi, I have these classes https://plaster.tymoon.eu/view/2486#2486 but when I try to make an instance of one-hundred I get the condition "IPN-PAYMENT-SUCCESS is a forward referenced class .. IPN-PAYMENT-SUCCESS is a direct superclass" how do I fix this?
<beach>
It means you haven't defined IPN-PAYMENT-SUCCESS.
<beach>
You misspelled it.
<beach>
SUCESS instead of SUCCESS.
<Josh_2>
oops
<Josh_2>
ofcoursee
mindCrime_ has quit [Ping timeout: 245 seconds]
<Josh_2>
Always best when its a silly error
<_death>
forward-refernce-classes are pretty neat.. a nice example of change-class
<Inline>
there is a xlib:display-force-output *display* when replaced with xlib:display-finish-output it works as expected
<Nilby>
The face when DISPLAY is not set
<Nilby>
:0
srhm has joined #commonlisp
tyson2 has quit [Ping timeout: 250 seconds]
<Inline>
ok, the only difference between the two seems to be this: both force any buffered output to be sent to the X server, but finish-output is the only one waiting till all requests are received and processed by the X server
<Inline>
hmmm
<Inline>
ah it's the same error with petal
<Inline>
there it uses force-output too
<Inline>
so nothing gets drawn here over
<Inline>
i get a white window but nothing happens
<Inline>
will change that too
<Nilby>
When I'm working with CLX interactively I often make it put an implicit display-finish-output after every repl comamnd.
v88m has joined #commonlisp
contrapunctus has left #commonlisp [#commonlisp]
blihp has joined #commonlisp
blihp has quit [Quit: Leaving]
<Inline>
oooh
<Inline>
now i get the bouce example
<Inline>
bounce*
<Inline>
both shove-bounce and bounce are wrong
<Inline>
tho they depend only on 1 definition
<Inline>
wait
<Inline>
i got both working now
<Inline>
the windows themselves are supposed to be empty, but the windows themselves are the bouncing ones
<Inline>
i.e. bounce bounces to the bottom then up then down decreasingly
<Inline>
and shove does the same whilst heading to the right
<Inline>
ok i think now i got all the demos working correctly
<Inline>
the bounce and shove bounce demos are not about things jumping inside windows, they are about the windows itself jumping around in some manner
<Inline>
mine head down to the bottom of my screen as if i have left a ball down on the floor
<Inline>
and the shove bounce is similar it just has a velocity to the right too
endparen has joined #commonlisp
<Inline>
if i knew who the maintainer of CLX was i'd just post the examples (the corrections as a diff file) maybe
<dieggsy>
is there an easy way of calling some code inline at macro expansion time without another defmacro ?
GreaseMonkey has joined #commonlisp
<Nilby>
You can just call any function that's allready defined when the macro is being defined.
<Nilby>
I'm not sure if that's what you mean? but something like: (defmacro foo (x) `(print ,(sqrt x)))
<dieggsy>
Nilby: i think im basically asking for the macro-equivalent of a lambda. like an unnamed macro that i can call/expand inline
<dieggsy>
i suppose you could just write... some macro that does this generically lol
<dieggsy>
but if there was already a built-in way
<Nilby>
macrolet ?
<dieggsy>
still named, though local
<dieggsy>
fair
<Josh_2>
With ironclad a 'sha512 hmac' requires making a hmac-digest with my private key, then using hmac-digest with the octets I wish to digest?
<Josh_2>
Can't for the life of me get the same output as the example :(
<Josh_2>
ah frick
<Josh_2>
Finally did it
<Josh_2>
Another one of those silly mistakes
<flip214>
Josh_2: I'm using (ironclad::hkdf-extract 'ironclad:sha256 secret string), what are you doing?
<Nilby>
dieggsy: If you have an example of what you want to do, it's likely someone here can come up with a nice way.
<dieggsy>
Nilby: it would literally be like an inline (mexpand (format nil "~a~b" "foo" "bar")) becomes "foobar" in the compiled code. As opposed to having to (defmacro thing () (format nil "~a~b" "foo" "bar")) and calling (thing). I can of course just write that mexpand macro myself, was just wondering if there's some clever built-in i don't know about
<dieggsy>
in fact, i'm fairly certain that's just as easy as (defmacro mexpand (exp) ',exp)
<dieggsy>
er, backquote that is, not regular quote
<dieggsy>
i'm not against writing a macro, just would be nice if we had a built-in inline form that does the same. of course, when you can write that yourself, no point baking in every little thing into the language lol
<dieggsy>
yay lisp heh
<Nilby>
_death: That's cool! I kind of hope I don't have to use it.
<Nilby>
I have used a gensym'd macrolet at least once though.
<_death>
Nilby: I think making docstring mandatory in METALIST was a good idea
<Nilby>
Indeed.
dieggsy has quit [Quit: Reconnecting]
dieggsy has joined #commonlisp
frgo has quit [Ping timeout: 272 seconds]
<dieggsy>
eta: Oh, neat. maybe i am
Nilby has quit [Ping timeout: 272 seconds]
VincentVega has joined #commonlisp
contrapunctus has left #commonlisp [#commonlisp]
dieggsy has quit [Quit: Reconnecting]
dieggsy has joined #commonlisp
<Josh_2>
flip214: lul hkdf-extract works :P thanks
karlosz has joined #commonlisp
contrapunctus has joined #commonlisp
<dieggsy>
I'm doing something kind of weird and injecting a "git status" output into code as a string at macro expansion time
<dieggsy>
it seems that this works even if i start lisp outside of that git directory
<dieggsy>
is that just chance, or is it somehow guaranteed that files are somehow compiled within the context of where they are in the file ssytem
<dieggsy>
oh, nevermind, i'm an idito
<dieggsy>
i have a (with-current-directoy ...) going on. excellent. no magic here
selwyn has quit [Remote host closed the connection]
selwyn has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 27.1]
neirac has left #commonlisp [Leaving]
ec has quit [Remote host closed the connection]
rgherdt has quit [Ping timeout: 244 seconds]
trocado has joined #commonlisp
<dieggsy>
it's quite weird that pathname-directory doesn't return a pathname - am I using the wrong function?
<Josh_2>
wow
<Josh_2>
finally figured it out, turns out in one place you use a private key, the other you have to use a different key
kevingal has quit [Remote host closed the connection]
karlosz has quit [Quit: karlosz]
<Inline>
oook, but still this qix example is somehow wrong
shka has quit [Ping timeout: 258 seconds]
<MichaelRaskin>
dieggsy: pathname-directory is «directory of pathname»
karlosz has joined #commonlisp
pve has quit [Quit: leaving]
aeth has quit [Ping timeout: 258 seconds]
selwyn has quit [Read error: Connection reset by peer]
Krystof has quit [Ping timeout: 245 seconds]
franco has joined #commonlisp
aeth has joined #commonlisp
hoagie has joined #commonlisp
<waleee>
fe[nl]ix: around?
<waleee>
is a lack of /etc/hosts on linux a known bug of iolib/sockets:lookup-hostname ?
<waleee>
(that it fails if /etc/hosts doesn't exist)
<pjb>
waleee: I don't think there's a hard requirements for most /etc/ files. There's a standard sysexit code for such an occurence: EX_OSFILE
<pjb>
waleee: the question is how does it fail, and can you exit with that sysexits code?
<pjb>
waleee: another consideration is that there's a configuration to specify what resource, and in what order, is used to perform various lookups, including DNS lookups.
<pjb>
Well, as mentionned, if it's a system with nss, the file may not exist.
<pjb>
One should use the API.
<pjb>
gethostbyname(3) etc.
<waleee>
forgive my noobness, but is it a function in iolib/sockets ?
<pjb>
gethostent() if you need to scan all the entries (for some value of "all", depending on the configuration, and what's available locally, I guess).
<pjb>
waleee: no, it's a posix function. It should be used by iolib/sockets instead of reading /etc/hosts.
<waleee>
doesn't seem to do that
<pjb>
Report a bug.
<pjb>
In the meantime, you can patch your copy of iolib.sockets.
hineios has joined #commonlisp
akoana has joined #commonlisp
<waleee>
wtf my email was registered on a ubuntu one-account (needed for launchpad bug-reports)
<waleee>
oh, I had registered on launchpad about 15 years ago
mindCrime_ has quit [Ping timeout: 250 seconds]
<waleee>
of course the launchpad wasn't actively used
<jcowan>
In exactly no lisps can you mutate (); it's an atomic object like 5.
<jcowan>
(You can in Python)
yitzi has quit [Quit: Leaving]
mindCrime_ has joined #commonlisp
hoagie has quit [Remote host closed the connection]
VincentVega has quit [Remote host closed the connection]
srhm has quit [Quit: Konversation terminated!]
Lycurgus has joined #commonlisp
<pjb>
jcowan: you could in some lisp.
<jcowan>
Which?
<pjb>
jcowan: (psetf nil t t nil) was a famous hack.
<pjb>
jcowan: perhaps on lisp machine lisp?
<pjb>
Nowadays, there are constant variables so such an occurence is detected.
<jcowan>
That changes the definitions of the symbols t and nil, which is not the same as mutating either one (or any othr symbol)
<pjb>
Oh, like changing their name?
<moon-child>
sounds like smalltalk 'become'
<pjb>
Well, it is possible that an implementation uses the string passed to intern or make-symbol as string name, and if you mutate this string you could thus change the symbol name.
<pjb>
But again, modern CL implementations have protections to prevent that.