kevingal has quit [Remote host closed the connection]
<ozzloy>
i'm running a script where i am making an AI. how do i recover from not having a ~ at the end? if i type it after hitting <enter> it doesn't work
<Bike>
if you're getting an end of file, you could just recover from that
<Bike>
hm, or maybe that's not as easy as i though
<Bike>
instead of a delimited list you could just READ repeatedly, then
ikrabbe|2 has joined #lisp
ikrabbe has quit [Ping timeout: 246 seconds]
zdm has quit [Quit: ZNC 1.8.2+deb1~bpo10+1 - https://znc.in]
zdm has joined #lisp
madage has quit [Ping timeout: 268 seconds]
Aurora_v_kosmose has quit [Ping timeout: 268 seconds]
cpt_nemo has quit [Ping timeout: 264 seconds]
cpt_nemo has joined #lisp
Aurora_v_kosmose has joined #lisp
ilshad has quit [Ping timeout: 264 seconds]
madage has joined #lisp
_whitelogger has joined #lisp
theothor` has joined #lisp
theothor` has quit [Ping timeout: 256 seconds]
red-dot has quit [Read error: Connection reset by peer]
red-dot has joined #lisp
ilshad has joined #lisp
casual_friday__ has joined #lisp
theothor` has joined #lisp
theothor` has quit [Ping timeout: 272 seconds]
cchristiansen has joined #lisp
troydm has joined #lisp
ilshad` has joined #lisp
ilshad has quit [Ping timeout: 240 seconds]
bdixat has joined #lisp
ilshad` has quit [Ping timeout: 246 seconds]
judson_ has joined #lisp
aeth has quit [Ping timeout: 272 seconds]
aeth has joined #lisp
kopiyka has quit [Ping timeout: 260 seconds]
<markasoftware>
thank you scymtym!
judson_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
skapata has quit [Remote host closed the connection]
<beach>
charles`: There are many cases like that. FUNCTION, SETQ, and any special operator or macro. If it were evaluated, then it would be a function.
winny has joined #lisp
<beach>
It's kind of by definition. If an operator can be a function, then it is.
<charles`>
ah, but the code inside is executed at some point. where with declaim, at not point is it executed
<Bike>
the argument to FUNCTION is not evaluated
<Bike>
innumerable operators only evaluate some of their syntax
<beach>
charles`: Most special operators and macros take a mixture of expressions. Some expressions are meant to be evaluated and they are then called "forms". Others aren't.
<beach>
charles`: Like LET for instance. The first argument is a list of bindings, and the remaining arguments are declarations and forms.
<beach>
charles`: For SETQ and SETF, the odd arguments are not evaluated, and the even ones are.
judson_ has joined #lisp
nullkl has joined #lisp
Bike has quit [Quit: sleep]
ilshad` has quit [Ping timeout: 256 seconds]
ikrabbe|2 has joined #lisp
ikrabbe has quit [Ping timeout: 272 seconds]
fubbiquantz has quit [Ping timeout: 265 seconds]
scymtym_ has joined #lisp
scymtym has quit [Ping timeout: 264 seconds]
<charles`>
wow, I really confused myself. I realize now that I meant to be asking about macro expansion. In (declare (type (and blah... AND doesn't get macroexpanded whereas if I have (setf sym (and blah... AND will get macroexpanded
karlosz has joined #lisp
<beach>
charles`: Yes, the term is "form". If it is a "form" then it gets evaluated, and thus macroexpanded. But there are cases where an expression is macroexpanded even though it is not a form.
pankajsg has quit [Ping timeout: 260 seconds]
<beach>
A DECLARE expression has no forms in it, and nothing is macroexpanded.
nullkl has quit [Ping timeout: 246 seconds]
ikrabbe has joined #lisp
<charles`>
beach, in case you were wondering. The function that I need to be tailrec optimized was indeed written tail recursively.
ikrabbe|2 has quit [Ping timeout: 272 seconds]
karlosz has quit [Quit: karlosz]
<beach>
OK.
aartaka has joined #lisp
ikrabbe|2 has joined #lisp
ikrabbe has quit [Ping timeout: 264 seconds]
landakram has joined #lisp
theothor` has joined #lisp
bilegeek has quit [Quit: Leaving]
v3ga has quit [Ping timeout: 272 seconds]
v3ga has joined #lisp
pankajsg has joined #lisp
theothor` has quit [Ping timeout: 265 seconds]
charles` has quit [Ping timeout: 264 seconds]
theothor` has joined #lisp
aeth has quit [Ping timeout: 256 seconds]
aeth has joined #lisp
orivej has quit [Ping timeout: 256 seconds]
waleee-cl has quit [Quit: Connection closed for inactivity]
judson_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
gj has joined #lisp
thmprover has quit [Quit: [Exit, pursued by bear]]
mrcom has quit [Quit: Leaving]
judson_ has joined #lisp
gj has quit [Quit: Connection closed]
aartaka_d has joined #lisp
landakram has quit [Remote host closed the connection]
narimiran has joined #lisp
gj has joined #lisp
aartaka has quit [Ping timeout: 272 seconds]
<lukego>
Just spent about fifteen minutes fixing bugs rooted in my inability to write the letters "ppcre" in the right order and with the p:c ratio. I don't suppose anyone has a catchy mnemonic for this? :)
sauvin has joined #lisp
CrazyEddy has quit [Ping timeout: 240 seconds]
vsync has quit [Ping timeout: 265 seconds]
gj has quit [Quit: Connection closed]
Cymew has joined #lisp
zacts has quit [Quit: leaving]
<jackdani1l>
lukego: I've made one for you! ppc (like an architecture) (c)r(ing)e
jackdani1l is now known as jackdaniel
CrazyEddy has joined #lisp
<lukego>
thanks :) "ppc like the architecture" should get me over the hup. I'm doing a lot of "ccpre" and "cppre" mistakes :)
<lukego>
I guess it's the whole "c rhymes with p" thing
<lukego>
and mysteriously conjuring up "c-compatible" when I'm supposed to be thinking "portable perl" :)
jrm has quit [Quit: ciao]
jrm has joined #lisp
ilshad` has joined #lisp
vsync has joined #lisp
zaquest has quit [Remote host closed the connection]
theothor` has quit [Ping timeout: 272 seconds]
zaquest has joined #lisp
kenran has quit [Quit: leaving]
imode has joined #lisp
skapata has joined #lisp
nullkl has joined #lisp
<fiddlerwoaroof_>
sounds like you need a package-local-nickname
ikrabbe has joined #lisp
shka_ has joined #lisp
nullkl has quit [Ping timeout: 256 seconds]
ikrabbe|2 has quit [Ping timeout: 264 seconds]
theothor` has joined #lisp
theothor` has quit [Ping timeout: 246 seconds]
jonatack_ has joined #lisp
imode has quit [Quit: WeeChat 3.0]
judson_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
engblom has quit [Changing host]
engblom has joined #lisp
cchristiansen has quit [Ping timeout: 256 seconds]
housel has joined #lisp
random-nick has joined #lisp
rumbler31 has quit [Ping timeout: 272 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
anticrisis has quit [Read error: Connection reset by peer]
Gromboli has quit [Quit: Ping timeout (120 seconds)]
Gromboli has joined #lisp
<splittist>
I find that the moment a word becomes something I'm going to typing a lot - say, I'm creating a bunch of functions with a DOCUMENT parameter - then my fingers will switch to DOUCMENT or DOCUMNET or anything except the correct spelling. Once I'm using the word only occasionally, the correct sequence becomes automatic again.
aartaka has quit [Ping timeout: 264 seconds]
gj has joined #lisp
galex-713 has quit [Ping timeout: 272 seconds]
pve has joined #lisp
<beach>
Interesting. My fingers are unable to type "the", and instead almost always come up with "teh", and this happens so often that I have an Emacs abbrev that turns the wrong version into the correct one. The same thing happens with "language", and some others as well.
<gj>
since i switched to the dvorak keyboard, i do not have any problem with spelling.
<beach>
That's also interesting.
galex-713 has joined #lisp
hjudt has joined #lisp
fosred has joined #lisp
<jdz>
I'm using dvorak, and the other day I was repeatedly typing "lusk" instead of "luks".
luni has joined #lisp
<gj>
hmm, there are a few strange words to type using dvorak, definitely.
<beach>
Also, it was created for the English language, right? I use three languages every day, so I think I am better off with a design that is equally bad for all three.
<luni>
good morning #lisp
<beach>
Hello luni.
<gj>
dvorak was created for english, but other language variants exist.
<beach>
Oh, but I wouldn't want to change the layout every time I use a different language.
<contrapunctus>
I've recently switched to Dvorak and I really like that - is on the home row...perfect for Lisp code 🙂
<gj>
so many Dvorak users in one place, wow!
<contrapunctus>
And I was just looking at keyswap-mode, to swap [] with () in Lisp (or maybe all) buffers
<gj>
yes, i find Dvorak is very good for programming.
<gj>
that is interesting, have you heard of space cadet shift?
<gj>
it allows you to type parentheses by hitting shift, and shift still functions normally if you press and hold.
<beach>
So in chapter 2 of Land of Lisp, the author uses "command" to mean both "form" and "operator". He says that LET is used to "declare" variables, and the FLET and LABELS are used to "declare" functions. He uses "arguments" to mean "parameters" and his indentation of bodies of local functions is wrong. I personally find this kind of sloppiness unacceptable.
nullkl has joined #lisp
galex-713 has quit [Ping timeout: 265 seconds]
nullkl has quit [Ping timeout: 272 seconds]
vegansbane6963 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
ikrabbe has quit [Ping timeout: 256 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
aeth has quit [Ping timeout: 264 seconds]
amb007 has quit [Read error: Connection reset by peer]
aeth has joined #lisp
amb007 has joined #lisp
jello_pudding has quit [Ping timeout: 246 seconds]
Stanley00 has quit [Remote host closed the connection]
Stanley00 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
jello_pudding has joined #lisp
amb007 has joined #lisp
Stanley00 has quit [Ping timeout: 272 seconds]
ilshad` has quit [Ping timeout: 264 seconds]
jonatack has quit [Read error: Connection reset by peer]
ikrabbe has joined #lisp
<hhdave>
jackdaniel: are you there? The private chat with you says you've diconnected
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
<jackdaniel>
yeah
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
galex-713 has joined #lisp
h4ck3r9696 has quit [Quit: Leaving.]
Sheilong has joined #lisp
theothor` has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
theothor` has quit [Ping timeout: 264 seconds]
<hhdave>
jackdaniel I got your message but I don't seem to be able to send to you on the direct chat. I closed it and tried to start another, but it just says 'waiting for connection'. Don't know if it's my end that's the problem.
ilshad` has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
kopiyka has joined #lisp
h4ck3r9696 has joined #lisp
ikrabbe|2 has joined #lisp
aeth has quit [Ping timeout: 240 seconds]
ikrabbe has quit [Ping timeout: 256 seconds]
amb007 has quit [Read error: Connection reset by peer]
aeth has joined #lisp
fubbiquantz has joined #lisp
amb007 has joined #lisp
h4ck3r9696 has quit [Quit: Leaving.]
amb007 has quit [Ping timeout: 265 seconds]
<jmercouris>
how to check if a string is a file path?
<jmercouris>
is there any way to reliably know?
<jmercouris>
I could check for a file:// protocol prefix, but then the user MUST specify that
<jmercouris>
I'm not sure how to answer that, and it depends on the os
<jackdaniel>
if you want just check whether the file denoted by a pathname designator exists you may feed it to the function probe-file
ilshad` has quit [Ping timeout: 272 seconds]
<jmercouris>
that's expensive, but possible
h4ck3r9696 has joined #lisp
<jackdaniel>
I don't understand what you've just said
<jmercouris>
it's expensive to probe if files exist on disk
<jmercouris>
though that /would/ work
<jackdaniel>
what do you want to check then? if not whether a string is a path to a file
theothor` has joined #lisp
<edgar-rft>
the only alternative I know would be using regular expressions what probably would be even more expensive
<edgar-rft>
where regular expressions only can check if a string *looks* like it *might* be a file path, it's not a reliable test at all
theothor` has quit [Ping timeout: 240 seconds]
amb007 has joined #lisp
zacts has joined #lisp
hjudt has quit [Ping timeout: 260 seconds]
h4ck3r9696 has quit [Quit: Leaving.]
nullkl has joined #lisp
KUrare has joined #lisp
nullkl has quit [Ping timeout: 256 seconds]
Bike has joined #lisp
zacts has quit [Quit: leaving]
<flip214>
does anyone know any papers that describes the advantages of CL? Especially recent comparisons to other languages would be welcome, if they mention monetary advantages as well it would be even better.
<jackdaniel>
starting a flipper running common lisp requires less coins than a one running C#
amb007 has quit [Ping timeout: 264 seconds]
<heisig>
flip214: Discussions like "should we pick language A or language B" are rarely about facts. Maybe the best chance for CL is simply to outlive all the other languages.
amb007 has joined #lisp
<heisig>
Outliving the others could actually work. CL programs have very little bit rot, and don't require a lot of maintenance. So time is on our side :)
<heisig>
Contrast this with Python programs that have a half life of about four years.
<flip214>
heisig: yeah. I was asked about exactly these facts right now. And the half-life of other things is one of the major points in my argumentation.
amb007 has quit [Ping timeout: 272 seconds]
amb007 has joined #lisp
<luni>
but the fact that the half life of dgemm to make an example is high does not means that people doesn't switch to python or xyz
<heisig>
flip214: Maybe you should simply gather a list of awesome CL programs that stood the test of time. Like Maxima, Screamer, CLIM, OpusModus, ACL2, ...
<heisig>
That would illustrate the point that by choosing CL as an implementation language, you have an increased chance of creating something profound and long-lasting.
<flip214>
heisig: thanks! I'm already mentioning that libraries from 1994 still work, but applications is another good point
<flip214>
still, I'd like to make a point about economic differences
<heisig>
flip214: You could also ask the developers of a large CL application (e.g., QPX) to share their experiences with your employer. First-hand testimony can be very convincing.
<jmercouris>
I would be careful to push such a decision on your employer, if they agree, you will be responsible for every failure
<flip214>
jmercouris: no risk no fun
<jmercouris>
regardless of whether the responsibility is justified, and don't worry, many employees will complain and say "tHiS iS sO mUcH eAsIer In Js"
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
<jmercouris>
good luck flip214
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
<flip214>
thanks
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
cloudy[m]1 has joined #lisp
ldb has joined #lisp
<ldb>
good evening
<beach>
Hello ldb.
svetlyak40wt has quit [Remote host closed the connection]
svetlyak40wt has joined #lisp
pfdietz has joined #lisp
svetlyak40wt has quit [Ping timeout: 256 seconds]
hendursa1 has quit [Quit: hendursa1]
hendursaga has joined #lisp
charles` has joined #lisp
ym has joined #lisp
rpg has joined #lisp
cage_ has joined #lisp
cods has quit [Ping timeout: 240 seconds]
aggin has joined #lisp
perrier-jouet has quit [Ping timeout: 256 seconds]
euandreh has quit [Ping timeout: 272 seconds]
aggin has quit [Quit: WeeChat 3.0.1]
ukari has quit [Remote host closed the connection]
Lord_Nightmare has quit [Ping timeout: 256 seconds]
ukari has joined #lisp
ilshad` has joined #lisp
sjl has joined #lisp
<rpg>
Anyone out there motivated to take over CL-JSON? I'd really like to see it get some of it's 6+ year old fixes applied, but I can't easily take on YA CL library.
<Gnuxie[m]>
all the JSON libraries are in a bit of a mess frankly
<aeth>
probably because people just configure Lisp programs in Lisp itself, cutting a lot of the demand for something like JSON
<pfdietz>
(checks if we use that) We do.
<aeth>
unfortunately, interoperability with the rest of the world is still important
<pfdietz>
jsown is much faster, though.
cods has joined #lisp
<pyc>
hey #lisp! is there anyone here studying Practical Common Lisp or any of the other Lisp books? I would like to invite you to #lispx . Trying to form a study group to keep myself motivated and share learnings with.
<jmercouris>
pyc: why not post on cl-school?
<mfiano>
zulu did a good job with the new json library
<pyc>
jmercouris: does cl-school have book-based study groups?
<jmercouris>
no
<pyc>
what is the channel name. there is nobody at #cl-school
<pyc>
in the meantime anyone interested to form study group is welcome at #lispx
<jmercouris>
is :UNIX a Feature on Darwin systems?
theothor` has joined #lisp
<Gnuxie[m]>
jmercouris: it's #clschool and you should come there too :)
<Cymew>
pyc: The channel you are looking for is #clschool
<jmercouris>
Gnuxie[m]: why is that?
<rpg>
pfdietz: I wouldn't mind if our community would stop writing libraries from scratch over and over, and would give the old ones some love instead.
<jmercouris>
typically that involves more work, more politics and a healthy dose of NIH
<jmercouris>
I know I frequently rewrite things because I don't want to deal with contacting an old maintainer or diving into their codebase
<rpg>
Unfortunately, it leaves us with a zillion unmaintained half-broken libraries.
<Xach>
rpg: I think there are some good reasons and bad reasons why people strike out on their own
theothor` has quit [Remote host closed the connection]
theothor` has joined #lisp
<rpg>
Xach: Sure, but it's hard to argue that NIH isn't a plague on the community as a whole.
<Xach>
rpg: a bad one is "i didn't know it already existed". similarly "i knew it existed but could not tell if it solved my problem"
<Xach>
I wouldn't argue that, I get to see new utility and test libraries pop up all the time. But there are obstacles that could be removed to help the situation somewhat.
<jmercouris>
it is a plague IN ALL communities
<rpg>
Stuff like JSON handling is critical for interoperation with the world of non-CL code, and the current Tower of Babel approach is ... not good.
<jmercouris>
the reason it may not seem so in other communities is because the relative size of libraries is different
<mfiano>
What about "I knew it existed, but since Lisp is so flexible it was wasier to write my own 20% solution than to unmap the projection of someone elses' mind onto my own"
<Xach>
Some reasons will always remain, like "I wanted something I made myself"
<jmercouris>
there are GIANT libraries in JS because there are tons of users in JS
<pfdietz>
I try to focus on working on existing libraries, rather than starting new ones. Sometimes that means building new tools, though.
<Xach>
mfiano: that's a tricky one!
<rpg>
I was thinking I'd like to build something that would handle JSON schema, but ... seems like it would be building on sand.
<Xach>
if you're doing work in your free time and you want to make life easy for yourself, external pleading may not help
<jmercouris>
I try at least to focus on spinning out libraries out of Nyxt..
<mfiano>
easier*
aeth has quit [Ping timeout: 260 seconds]
theothor` has quit [Read error: Connection reset by peer]
theothor` has joined #lisp
<pfdietz>
Download stats on QL are very useful for focusing on focusing attention on most-used systems.
<rpg>
jmercouris: If you and I are both relying on CL-JSON, interested in forking it in a way that would be more accepting of patches?
<jmercouris>
I have not extended it any way though, for my needs I find it quite adequate
<rpg>
pfdietz: Yes. There are several patches that should be applied but aren't and won't be.
aeth has joined #lisp
<pfdietz>
I see 10 pull requests there
<rpg>
I think the last commit was in 2014?
<pfdietz>
Yes
<rpg>
I'd be happy just to see a fork with multiple owners who would, as time permits, review and merge PRs.
<jmercouris>
I think this problem is more generally solved by the 'sharplispers' group
<jmercouris>
of which I, and many others are not welcome to participate in
<rpg>
I haven't followed that bit of CL sociology
<pfdietz>
Time to create sharperlispers!
<jmercouris>
I am willing to create an organization to maintain libraries in a community fashion
<jmercouris>
we have adopted some libraries in the development of Nyxt, but we have not created an organization for it...
<jmercouris>
mostly just Pierre putting them on his account
<jmercouris>
and getting write permissions as well, like cl-webkit, quri... etc
<rpg>
Could be done on GitHub or cl.net
<jmercouris>
pfdietz: would you participate?
<rpg>
I'd sign up. I just don't want to start up a personal fork of libraries like cl-json, which would just move the same problem from point A to point B
<aeth>
The problem with the JSON libraries is that they're just completely fundamentally flawed. Many authors, for instance, seem to think that treating CL:NIL as equivalent to JSON's "null" instead of as JSON's "false" is a reasonable default, which, I mean... really? Really? NIL is false. CL doesn't have a true null.
theothor` has quit [Remote host closed the connection]
<rpg>
"pointylispers"?
theothor` has joined #lisp
<jmercouris>
or the "lisp user group"
<aeth>
The solution definitely is to NIH a proper JSON library and then, if possible, base the old libraries on the new one, to preserve the old (flawed) APIs. Like e.g. what happened with PNGs
<pfdietz>
I am inclined to participate, but I find myself short on time these days for all my side projects. So "maybe"?
<Gnuxie[m]>
aeth: agreed
<jmercouris>
Gnuxie[m]: you haven't answered my question, why do you think I should join clnoobs?
svetlyak40wt has joined #lisp
<rpg>
aeth: It isn't a solvable problem (this is why I think it would be useful to have JSON schema support) -- there's no way to tell, absent contextual information, if NIL == [] or NIL == False
<aeth>
rpg: The least surprising default would be to CONS any list to avoid the NIL issue. Otherwise you still have the ambiguity between NIL as [] or NIL as {}
jonatack has joined #lisp
<rpg>
aeth: That's a *much* bigger lift. I wouldn't sign up to do that, but I would sign up to join an organization that would take on some orphaned libraries, and take time as available to merge PRs, etc.
<jackdaniel>
aeth: some libraries provide flags to customize that
<aeth>
jackdaniel: Defaults matter.
<jackdaniel>
I think that yason does that at least
<mfiano>
jzon claims to have unambiguous null, [], and false
<Cymew>
Who the heck is "sharplispers"?
<aeth>
Imo, the reason nobody's using Linux on the desktop is because while Linux is great and you don't have to touch it in 10+ years after you set it up, it does require non-trivial configuration because the defaults suck.
<rpg>
aeth: I suppose. I'm more interested in adding JSON Schema support in order to end run the ontological questions like "What is NIL"?
<pfdietz>
My contributions these days tend to be "here's a widely used library with inadequate tests. Let's add some." I sometimes fix the bugs found.
<aeth>
Defaults are the most important thing I think of when designing software.
<jmercouris>
aeth: what does that have to do with anything?
<jmercouris>
oh I see
<aeth>
jmercouris: My point is that most people don't change the default, so if the JSON libraries all have awful defaults, it doesn't matter that some of them can be configured properly. 99% of uses won't be proper.
<rpg>
aeth: I get it, but I think we are back in the "the better is the enemy of the good" territory, writing YA JSON Library.
theothor` has quit [Ping timeout: 256 seconds]
<pfdietz>
Those yaks won't shave themselves, son.
<Cymew>
Bike: Thanks
<jmercouris>
maybe we can make an organization, where by default, if a library is not updated in 1 year, it gets put into community maintenance
<rpg>
If you don't work at the low level, the defaults are less of a pain point. My opinion is that there is no perfect match from JSON to CL, and searching for one is like looking for El Dorado.
<jmercouris>
and then everyone can approve patches, if let's say 5 people sign off
<rpg>
I'm more interested in shaving the yak that is CL-JSON (and a bunch of other libraries).
<aeth>
jmercouris: A year really isn't a long time in the CL world.
<rpg>
I can't afford to rewrite everything I have that uses JSON in the hopes that something better is out there. I'd rather build some superstructure. YMMV.\
<jmercouris>
aeth: we can argue about the specifics later, I am interested in the concept
euandreh has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
<rpg>
jmercouris: Agreed -- I'd like to set up the Home for Wayward Libraries, rather than discuss generating a new one.
amb007 has joined #lisp
<_death>
rpg: you don't need contextual information to decide to represent Lisp NIL as JSON [] (or better, {}.. #() could be []) and Lisp :FALSE as JSON false..
<aeth>
rpg: I think you kind of have to design it with schema in mind at the start.
<jmercouris>
something something cat herding
<rpg>
Let's fork the discussion of how to properly bridge JSON with CL to a separate process, and get back to how to do a little carpentry on libraries that need some maintenance.
amb007 has quit [Read error: Connection reset by peer]
<rpg>
Now I see why Slack has threads....
<aeth>
"Note that here we have nil representing false, null, and []. This is done by examining the :type of each slot. If no type is provided, nil shall serialize as null."
<aeth>
God damn it.
<aeth>
NIL IS NOT NULL.
<aeth>
Why does every JSON library author not understand this?
<_death>
com.gigamonkeys.json does understand that..
<_death>
'
<jackdaniel>
threads in slack won't filter noise, quite the contrary
<jackdaniel>
it is not a tooling problem
<_death>
it uses :null for null
amb007 has joined #lisp
<rpg>
I have to go walk dogs, I'm afraid. pfdietz jmercouris -- I'll check back in later, and am happy to do a little work to help set up the CL Library Orphanage.
<aeth>
_death: That's the correct way to do it.
<jackdaniel>
rpg: what's wrong with sharplispers for that purpose?
<_death>
aeth: that's why I've been using it for many years
<aeth>
_death: It doesn't surprise me that someone who wrote the book on CL understands CL
<jmercouris>
well, they aren't a welcoming community
<jackdaniel>
how so?
<jmercouris>
not anyone can join and participtae
<jmercouris>
s/participtae/participate
<jackdaniel>
well, that is a sound strategy, do you want to let in dilletants to make orphaned libraries worse?
<jmercouris>
why is it one or the other?
<rpg>
pfdietz, jmercouris If one were to do this, I'd favor having a loose confederation....
<jackdaniel>
I mean, you don't let anyone from the street to paint your house
<jmercouris>
the governance of the entity is not suitable for a community
<jmercouris>
it is led by a single dictator
<jmercouris>
which, has led, to many other problems before
<jackdaniel>
well, good luck, but calling sharplispers not welcoming sounds like some personal grudge ;-)
<jmercouris>
it is by definition, even *your* definition, not welcoming
<rpg>
I'd be happy to do this under the umbrella of sharplispers, but I have no idea how to join...
ldb has quit [Ping timeout: 260 seconds]
<jmercouris>
first you must appease the dictator...
<rpg>
or how it works.
<aeth>
And in case anyone pokes me in like 10 hours to challenge what I said... You can treat NIL as null-as-the-default-value within CL, but when you're serializing to/from JSON you're interoperating with languages who have null-as-the-crappy-thing-that-breaks-the-type-system or maybe null-as-the-element-in-the-three-value-logic-system. So it's best to think of NIL as just false that happens to be the default value for a lot of things (unless wor
<jackdaniel>
rpg: just ask Xach to add you to the group
<aeth>
(unless working with lists)
nullkl has quit [Ping timeout: 264 seconds]
<jmercouris>
IFF Xach approves you, you have the privilege of joining the group
<jmercouris>
I don't know about you, but that doesn't sit right with me
<jmercouris>
CL as a principle, and as a design is not based on the BDFL, so why should our libraries be distributed and maintained this way?
waleee-cl has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
<jmercouris>
of course, there are other shows in town, but those don't get much community support
<rpg>
jackdaniel: OK, will do. What's the procedure for getting a library adopted by sharplispers? And what's the protocol for getting things merged?
<jmercouris>
rpg: you'll find that on their non-existent community information page
amb007 has joined #lisp
<_death>
100% working roundtrip is a basic requirement of a json encoding/decoding library.. that some libraries that lack this are still being used is strange
<jmercouris>
For example, why can we not get packages from pjb on the official Ql Dist? Because the BDFL does not desire it, and does not like pjb
<mfiano>
That's not true
<rpg>
jmercouris: It's not an irrational issue about pjb. But that's a separate discussion.
<jmercouris>
really? are you sure about that?
<mfiano>
pjb's stuff was on Quicklisp until it failed to build and he did not want to update it
<jackdaniel>
rpg: technically speaking anyone could spawn a repository in sharplispers, but I don't think I have an access right to add users
<_death>
(even if you can make them do that after you realize the crappy defaults)
<jackdaniel>
so I'd just talk with Xach
<jmercouris>
mfiano: I've heard differently
jonatack has quit [Quit: jonatack]
<jmercouris>
what is the truth, I dont' know, may never know, I do know that Xach is a single point of failure/control
<jmercouris>
jackdaniel: people outside the organization cannot view permissions
<jackdaniel>
jmercouris: oh
<rpg>
TTYL -- the dogs aren't going to walk themselves.
<jackdaniel>
rpg: there are also luis and slyrus :) see you
<rpg>
And, heck, it's ABOVE ZERO -- gotta take advantage of that.
rpg is now known as rpg_away
<aeth>
_death: It's not just 100% roundtrip as the default behavior, but also interop with the other major programming languages. That's really where nil-as-null instead of nil-as-false tends to fail.
amb007 has quit [Ping timeout: 260 seconds]
<aeth>
The main reason why you'd want to use JSON is to import data from another language...
<aeth>
(Or export)
<aeth>
Those are the two main criteria.
<jmercouris>
I'm not sure why JSON superseded XML
galex-713 has quit [Ping timeout: 246 seconds]
<jmercouris>
I really don't see the benefit
<aeth>
jmercouris: It's smaller when sent over the internet.
<aeth>
S-expressions give you everything XML does while being even more concise, of course.
amb007 has joined #lisp
<jmercouris>
I don't see a difference between XML and SEXP
<jmercouris>
I see them as different flavors of the same idea
<_death>
right, a library that would reverse each string would also be out..
<Cymew>
I think the reason is spelled "javascript".
<jmercouris>
yeah, that's probably it
<aeth>
jmercouris: The main difference between XML and s-expressions is that XML lets you express the same thing in two ways. <foo bar="42">43</foo> vs <foo> <bar> 42 </bar> 43 </foo>
Lord_Nightmare has joined #lisp
<aeth>
jmercouris: Creating a way to express the first thing in s-expressions either gives you something like (foo :bar 42 43) or (foo (:bar 42) 43) and neither are that ideal because in the first case, you have to nontrivially parse it to see if you're inside a leading plist while in the second, most tags will have () or nil as their first item
<aeth>
Otherwise, yeah, s-expression is just a more network friendly form of XML because it reduces a ton of duplication (but if you compress it, that duplication is gone)
<jmercouris>
aeth: I never thought about that, interesting
<jmercouris>
I often think XML should have never allowed <foo bar="42">
<aeth>
yeah
ljavorsk has quit [Remote host closed the connection]
<jmercouris>
this is a huge sin in HTML as wel in my opinion
<jmercouris>
then again, HTML is supposed to just be XML anyways
<jmercouris>
but it isn't, of course
<aeth>
Well, the sin of HTML is different. The sin of HTML is that it is permissive of errors because Netscape and IE were competing to support the most garbage websites out there.
<jmercouris>
that's not a sin of the language
<jmercouris>
that is a sin of the implementations, and the greater community of developers
<aeth>
Well, they encoded it into the language semantics eventually.
<jackdaniel>
I think that this discussion ended in something that belongs to #lispcafe ,)
<aeth>
Stuff like "quirks mode"
<jmercouris>
don't even get me started
nullkl has joined #lisp
<aeth>
It's not as off-topic as it seems because I'm probably just going to use a subset of HTML in s-expression form as the GUI for my game engine.
ljavorsk has joined #lisp
<jmercouris>
oh wow, good luck
<aeth>
hence the word "subset" :-)
<jmercouris>
you know, that's actually not too far off from what we do
<jmercouris>
I've been working on a UI interface library
<jmercouris>
it's nothing crazy, but it demonstrates a pattern
<jmercouris>
just 82 lines of code, specifies a listener/watcher model for updating elements on screen
<pfdietz>
Any data can become Big Data by encoding it in XML!
amb007 has quit [Ping timeout: 272 seconds]
amb007 has joined #lisp
svetlyak40wt has quit [Remote host closed the connection]
<_death>
I've been wondering why format-graph-from-root in presentation method for present won't redraw when incremental-redisplay is nil (some check for output record ancestorship..) .. for now I'm using incremental-redisplay
<aeth>
technically speaking, all of these encodings are useless because ASCII/Unicode have group separator / record separator / unit separator, so you can juse use a three-tier-hierarchical, unprintable CSV-derived format for data. (but this line was 100% #lispcafe material)
<aeth>
s/juse use/just use/
ikrabbe|2 has quit [Ping timeout: 265 seconds]
sabrac has joined #lisp
<sabrac>
Hello everyone
<jmercouris>
hello sabrac
fubbiquantz has quit [Ping timeout: 260 seconds]
judson_ has joined #lisp
recalloc has quit [Ping timeout: 264 seconds]
<jmercouris>
I don't see get-hosts-by-name within the CLHS
<jmercouris>
yet, when I m-. on it, it takes me to a SBCL.lisp file
<jmercouris>
oh you know what, silly me, this is a backend specific file, never mind
<jmercouris>
I see there are a ton of backends...
<jmercouris>
kind of makes me want to write a 'trivial-get-hosts-by-name'
ilshad` has left #lisp ["ERC (IRC client for Emacs 26.3)"]
<jmercouris>
is there no way to portably write: sb-bsd-sockets:get-host-by-name?
<frodef>
Define "portably"?
<jmercouris>
lol
judson_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
rpg_away has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
maier has joined #lisp
<Bike>
the portability library is usocket, i think
<jmercouris>
yeah, it IS the portability library, but it doesn't appear to have a pure CL implementation of get-hosts-by-name
theothor` has joined #lisp
<jmercouris>
I've looked through a few back-ends and I only see implementation specific code
<jackdaniel>
guess why there needs to be a portability layer?
<Bike>
well, yeah, it's a portability library?
<Bike>
it's just a way to use implementation interfaces.
<jmercouris>
yes, but what about when those interfaces don't exist in a library!
<jmercouris>
for example, you want to use it in clasp
<jmercouris>
you must now implement some features in clasp that usocket can then utilize
<jmercouris>
surely it can be done in pure CL
<jackdaniel>
OK, when you do that let us know
<jmercouris>
don't be so snarky
<Bike>
well, for one, clasp actually does have sb-bsd-sockets. i don't know if usocket knows that though
<jackdaniel>
don't be so ignorant
<jmercouris>
oh, you really got me there!
<Bike>
for two, those implementation systems can't really be written in CL, which is why implementations provide them as extensions
<Bike>
they rely on calling into the operating system and suchlike
<jmercouris>
I'm of the opinion that anything can be written in CL
<jackdaniel>
I think that kpoeck added clasp to usocket
<jmercouris>
can you give an example of something that would be impossible?
galex-713 has joined #lisp
<Bike>
CL does not have functions for calling into the operating system. ergo, in "pure CL" you cannot call into the operating system
<jackdaniel>
oh, no, it was drmeister
<jmercouris>
Bike: yeah, but if you use some CFFI, it should be possible, no?
<Bike>
CFFI is not part of CL
<jmercouris>
OK, but it is portable?
<Bike>
sure
<jmercouris>
Then you can use it for this purpose
<jackdaniel>
(in the same sense usocket is portable)
<Bike>
yeah, that's the issue.
<jmercouris>
I can justify support for CFFI in this way much more than usocket
theothor` has quit [Ping timeout: 260 seconds]
<_death>
if an implementation supported ffi but not sockets, and cffi supported that implementation, usocket could conceivably have a cffi backend, but there's no need
<jmercouris>
that is what I am suggesting
<_death>
you'd also need to implement this for each platform with different socket interfaces
<_death>
implementations already do that and provide a Lisp interface.. so usocket uses that
<Bike>
yeah, if you look at the actual sb-bsd-sockets you can see lots of papering over win32 and darwin and such
<Bike>
i mean, i guess you could take it on yourself to duplicate all that work in terms of cffi instead of implementation FFIs
<Bike>
maybe?
<jmercouris>
no one else sees the value in this approach
galex-713 has quit [Read error: Connection reset by peer]
<jmercouris>
so my work would be meaningless
kevingal has quit [Ping timeout: 272 seconds]
<_death>
there is already a library that does something like that
<Josh_2>
ello
<_death>
it's called fsocket
<jmercouris>
I like it
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
ljavorsk has quit [Ping timeout: 272 seconds]
amb007 has quit [Read error: Connection reset by peer]
luni has quit [Quit: Connection closed]
galex-713 has joined #lisp
amb007 has joined #lisp
Cymew has quit [Ping timeout: 256 seconds]
maier has quit [Quit: leaving]
h4ck3r9696 has joined #lisp
h4ck3r9696 has quit [Max SendQ exceeded]
h4ck3r9696 has joined #lisp
dyelar has joined #lisp
bilegeek has joined #lisp
svetlyak40wt has joined #lisp
phantomics has quit [Quit: Ex-Chat]
theothor` has joined #lisp
<_death>
well, nowadays it could even be less portable.. usocket works on mezzano ;)
svetlyak40wt has quit [Ping timeout: 256 seconds]
rpg has joined #lisp
theothor` has quit [Ping timeout: 265 seconds]
aartaka has joined #lisp
ebrasca has joined #lisp
<jasom>
basic-binary-ipc works with TCP on windows, linux, and BSD using the CFFI approach
<_death>
iolib uses the ffi approach as well
<jasom>
doesn't iolib rely on libfixposix though?
<_death>
yeah.. and also usocket seems to have an iolib backend
<jasom>
basic-binary-ipc has no non-lisp non-os provided dependencies but does not support dgram sockets
<Bike>
i don't understand what you're going for here. x and y don't change between iterations, so fx and fy don't change, but you recompute them every time anyway?
<mfiano>
Added a comment for a monofractal (one that doesn't multiply each octave with the previous).
<mfiano>
The multifractal I can't get to do all the sampling in the iteration body
judson_ has joined #lisp
<mfiano>
Ah yeah that might be a mistake.
_jrjsmrtn has joined #lisp
dyelar has joined #lisp
<mfiano>
Hmm, some other implementations seem to do the same thing...
<Bike>
i don't see anything analogous? if point is the equivalen to x and y, it's reduced on each iteration
<mfiano>
the point outside their loop is my x/y. the point inside is my fx/fy
<Bike>
yes
<Bike>
and each iteration the new point is computed from the old one
<mfiano>
At least that was the intention. I was looking at a few implementations, not sure I understand this Rust one
<Bike>
whereas yours is computed from the outside point
<mfiano>
so :for fx = (* x lacunarity) :then (* fx lacunarity) is what I need for that I believe
<mfiano>
that still leaves trying to do the initial point and octave 0 sampling inside the iteration. I see the Rust version is not either, but they don't have a powerful DSL :)
iskander- has joined #lisp
iskander has quit [Ping timeout: 240 seconds]
attila_lendvai has quit [Quit: Leaving]
<Bike>
i think the difficulty is that the first "signal" is not scaled like the later ones are.
<White_Flame>
if a macro generates a macrolet body inside its output, how does one expand those again?
<White_Flame>
in slime for viewing/debugging
svetlyak40wt has quit [Remote host closed the connection]
pankajsg has quit [Read error: Connection reset by peer]
svetlyak40wt has joined #lisp
troydm has quit [Ping timeout: 240 seconds]
<mfiano>
Sounds like your macro should be broken up into functions. You're not going to be able to interactively macrostep inside a backquoted form.
svetlyak40wt has quit [Ping timeout: 265 seconds]
kevingal has joined #lisp
hiroaki has quit [Killed (Sigyn (Spam is off topic on freenode.))]
a138 has quit [Read error: Connection reset by peer]
<fe[nl]ix>
jasom, _death, jmercouris: anyone interested in me publishing SBCL Linux binaries with libfixposix (and maybe openssl) statically linked ?
nullkl has quit [Ping timeout: 256 seconds]
villanella has joined #lisp
nullkl has joined #lisp
dunk has quit [Read error: Connection reset by peer]
jerme_ has quit [Remote host closed the connection]
alanz_ has quit [Remote host closed the connection]
banjiewen__ has quit [Remote host closed the connection]
buoy49 has quit [Remote host closed the connection]
kilimanjaro has quit [Remote host closed the connection]
sz0 has quit [Remote host closed the connection]
<White_Flame>
mfiano: can't really break out macrolets like that, and it's not too huge, just a few dozens of lines total
h4ck3r9696 has quit [Quit: Leaving.]
<mfiano>
White_Flame: Does SLIME have interop with macrostep-mode like Sly does? If so then just invoke that on the top-level macro call, press <tab> to jump to the next expandable form until you reach your macrolet call, and press "e" to expand that. (Of course keybindings are probably different; don't remember if I configured sly-macrostep myself or not)
h4ck3r9696 has joined #lisp
svetlyak40wt has joined #lisp
<White_Flame>
nah, e just says it's not an editable buffer, and anoter C-c Enter doesn't do anything to the macrolet inner usages
<jasom>
I've only used it at the REPL (and code-golfing)
<Josh_2>
jackdaniel: can I see?
villanella has quit [Ping timeout: 240 seconds]
<jackdaniel>
sure, navigate to mcclim implementation of draw-pattern
<jackdaniel>
I think that it was there
<Josh_2>
okay
<Josh_2>
Okay I see
hjudt has joined #lisp
kam1 has joined #lisp
Aurora_v_kosmose has quit [Remote host closed the connection]
<Josh_2>
Well my buddy was impressed by #.
Aurora_v_kosmose has joined #lisp
nullkl has quit [Ping timeout: 272 seconds]
nullkl has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
<jmercouris>
fe[nl]ix: I would be interested, yes
landakram has joined #lisp
troydm has joined #lisp
hjudt has quit [Ping timeout: 260 seconds]
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
drl has joined #lisp
drl has quit [Client Quit]
aeth_ has joined #lisp
aeth has quit [Disconnected by services]
aeth_ is now known as aeth
perrier-jouet has quit [Quit: WeeChat 3.0]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
orivej has quit [Ping timeout: 272 seconds]
dbotton has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
amb007 has joined #lisp
<jasom>
quick poll. I'm about to publish my YAML parser. cl-yaml parses "[[],false,null]" to (nil nil nil). I prefer it to parse to #(#() nil :null). My parser is configurable to do it both ways, but which should I default to?
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
<jasom>
Reason for my preference: I want to know which of the 3 values was in the actual YAML, so I'm only allowed to parse one value to nil. #() is an empty sequence already and I'm more likely to want to do (if boolean ...) than (if maybe-null ...) so null has to lose out and become a keyword.
contrapunctus has joined #lisp
<jasom>
I will provide a convenience function for parsing like cl-yaml if I don't default to the cl-yaml way
hiroaki1 has joined #lisp
amb007 has quit [Ping timeout: 260 seconds]
perrier-jouet has joined #lisp
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
hiroaki1 has quit [Quit: WeeChat 3.0]
amb007 has joined #lisp
hiroaki1 has joined #lisp
<phoe>
I'd prefer the latter
<phoe>
mostly because this avoids typing issues
<jasom>
I don't need to be convinced the latter is better in a vaccum, I need to be convinced that it's enough better for the default to be incompatible with existing libraries
nullkl has quit [Ping timeout: 260 seconds]
nullkl has joined #lisp
<|3b|>
can cffi callbacks do va_list stuff?
<jasom>
|3b|: if the documentation is correct then there is no way to sepcify variable arguments in defcallback
<Bike>
docs say defcallback can only involve fixed parameters
<|3b|>
ah, missed that :/
karlosz has quit [Read error: Connection reset by peer]
karlosz has joined #lisp
<Bike>
the va_list operators are macros and seem to usually involve some weird complicated shuffling, so lisp implementations might not wanna bother
<jasom>
It's actually fairly easy to implement for 1 ABI, but multiply that by how many ABIs are out there...
nullkl has quit [Ping timeout: 264 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
<jasom>
usually the first N values are passed identically to a function of N arguements, and then the rest are done with fancy stack tricks.
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
sjl has quit [Ping timeout: 240 seconds]
<Nilby>
many C APIs that have variable arguments, also have a version where it passes the va_list, e.g. vprintf, which I assume you could, perhaps unportably, use in a callback
amb007 has joined #lisp
<|3b|>
i need to make a callback that accepts variable args
<jasom>
|3b|: step 1: punch the API designer for invoking a callback with variable args :P
amb007 has quit [Read error: Connection reset by peer]
* |3b|
points at libinput logging
varjag has quit [Ping timeout: 265 seconds]
amb007 has joined #lisp
<jasom>
logging is I suppose somewhat defensible since it's basically replacing printf
<|3b|>
looks like libffi doesn't handle it either, so no logging for me :/
<jasom>
|3b|: you can log to sprintf
<jasom>
and then pull out the string
<|3b|>
what do you mean?
<jasom>
darn, it's not quite sprintf compatible
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
<|3b|>
i guess i can try to redirect stderr to a file or something and look at the default logging there
<Bike>
could you write a little wrapper that gets an actual string with vsprintf and then passes that to the lisp callback?
<|3b|>
don't really want to build a so just for 1 tiny function :p
<Nilby>
I think in practice you can do it, but it's not portable, so CFFI doesn't offer it. The va_list arg tend to be just as stack pointer, so with a stack pointer you can pull out the C args if you know exactly what they are.
<|3b|>
easier to just find stderr
<Bike>
fair enough
<|3b|>
(not completely trivial since i'm not actually working at the tty on which the code is running, but not too horrible)
<jasom>
It's entirely possible that if you treat va_list as a void * you can pass it along opaquely to sprintf, but that's ugly...
aeth has quit [Ping timeout: 256 seconds]
attila_lendvai has joined #lisp
attila_lendvai has quit [Changing host]
attila_lendvai has joined #lisp
<|3b|>
Xach: can you see if current version of cl-libinput builds enough for quicklisp now?
aeth has joined #lisp
zacts has joined #lisp
<jasom>
|3b|: a quick test on x64 shows that va_list is indeed treated like a void *. Writing a quick cffi test now...
<|3b|>
Xach: it is in ql already, just blacklisted
<|3b|>
due to "hasn't built in a while" or something like that
<|3b|>
it is less picky about library locations now, so that might have fixed it
<Xach>
|3b|: package NIX does not exist
<jasom>
arm64 generates wildly different code for the two :(
judson_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<|3b|>
ah, guess it only works when loaded as a dependency from other things that depend on osicat... i'll send some more PRs and get you to try again once it loads in a clean image for me