<ixelp>
GitHub - Gleefre/hello-alien: SBCL *works* on android as part of an application!
nij- has left #commonlisp [Using Circe, the loveliest of all IRC clients]
<pranavats>
We can probably use CLOG with SBCL to develop on android, with a basic app with a webview in place.
<Pixel_Outlaw>
Looking, thanks pranavats
<Pixel_Outlaw>
I really hate how mobile kind of destroyed our common tools across the board.
tyson2 has quit [Remote host closed the connection]
<Pixel_Outlaw>
Where are the pure linux phones? These carriers really took away general purpose computing.
<Pixel_Outlaw>
PinePhone bombed because nobody wanted to work on it, they all wanted to ride and not paddle. Hell, they were writing the webcam drivers in Python and they were a total green mess moving at like 1FPS.
amb007 has joined #commonlisp
istewart has joined #commonlisp
<pranavats>
Surprisingly, Ubuntu touch does run on relatively new hardware.
josrr has quit [Remote host closed the connection]
eddof13 has quit [Quit: eddof13]
amb007 has quit [Ping timeout: 264 seconds]
<Pixel_Outlaw>
I just think the closed nature of phones kind of presented a final frontier that nobody really wants to hack on.
<Pixel_Outlaw>
All of this closed bootloader nonsense.
ronald_ has joined #commonlisp
ronald has quit [Read error: Connection reset by peer]
random-nick has quit [Ping timeout: 272 seconds]
<aeth>
just wait until the Steam Deck scales down to a phone...
<aeth>
you can do anything you want on that (for now)
NotThatRPG has joined #commonlisp
pranavats has left #commonlisp [Disconnected: Replaced by new connection]
pranavats has joined #commonlisp
rbcarleton has quit [Remote host closed the connection]
rbcarleton has joined #commonlisp
mulk has quit [Ping timeout: 252 seconds]
mulk has joined #commonlisp
dnhester` has joined #commonlisp
chsasank has joined #commonlisp
dnhester` has quit [Ping timeout: 268 seconds]
X-Scale has joined #commonlisp
green__ has joined #commonlisp
hernan has quit [Read error: Connection reset by peer]
kagevf has joined #commonlisp
hernan has joined #commonlisp
NotThatRPG has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
brokkoli_origin has quit [Ping timeout: 272 seconds]
brokkoli_origina has joined #commonlisp
SR-71 has joined #commonlisp
kevingal has quit [Ping timeout: 260 seconds]
mulk has quit [Ping timeout: 264 seconds]
istewart has quit [Quit: Konversation terminated!]
mulk has joined #commonlisp
istewart has joined #commonlisp
benkard has joined #commonlisp
mulk has quit [Ping timeout: 264 seconds]
benkard is now known as mulk
<Bubblegumdrop>
Lisp Deck
<Bubblegumdrop>
Pixel_Outlaw Oh, I wrote CRUD web app but it's also an Android PWA so it works like an app
<Bubblegumdrop>
Pixel_Outlaw I used HTMX and jQuery
<Bubblegumdrop>
Sorry I thought you were asking about like a traiditonal GUI, I didn't even think the new "Web GUI" stuff
<Bubblegumdrop>
does anyone have any apps using clog? I was going to use it but settled on other tech instead
<beach>
If you have an implementation other than SBCL installed, please help me fill in the Current Practice section. You can just give the results here and I'll add them to the report.
justache has quit [Remote host closed the connection]
justache has joined #commonlisp
oneeyedalien has joined #commonlisp
oneeyedalien has quit [Client Quit]
istewart has quit [Quit: Konversation terminated!]
ebrasca has joined #commonlisp
chomwitt has joined #commonlisp
<ebrasca>
Good morning!
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
<johnjaye>
>cross-compiled linux programs with wine
<johnjaye>
idk what that is but if it means mingw then that's even wierder
<johnjaye>
mingw as far as i can tell is like, let's crush spindle and fold some linux stuff so it sort of works on windows
<adlai>
how is the comma read-macro sanitized ? for example, will ,(intern (symbol-name (gensym)) "KEYWORD") cons?
azimut has quit [Ping timeout: 260 seconds]
<Shinmera>
Bubblegumdrop: it's not "better" it just means I don't have to switch operating systems to compile
<adlai>
and what about the finite-consing yet unlikely to never not cons anything ,(intern (symbol-name 'gensym) "KEYWORD") ?
* adlai
tries copying younder even more precisely, for one last tease at ixelp
<adlai>
First a 'gensym and then a :gensym.. ,(intern (symbol-name 'gensym) "KEYWORD")
<aeth>
oh good I thought ixelp was mad at me but it's broken for everyone
<aeth>
maybe someone did ,(loop)
<adlai>
ok, enough ineffective hooliganism; I eagerly await explanation / links from someone who didn't just show up a few days ago :)
<aeth>
for the bot, each line is its own line
<aeth>
so ,(defun f (x) (1+ x)) ,(f 42) will work when the bot works
<aeth>
not just one expression... however, ,(f 43) will now fail
<aeth>
if the bot works
<adlai>
shouldn't it have some minimal hardening against hooliganism?
pve has joined #commonlisp
<aeth>
it is very sandboxed
<aeth>
but it somehow broke anyway
<aeth>
e.g. I think it just ignores ,(loop) entirely
<aeth>
plus, most of the nonsense you'd want to do can't fit in one IRC line
<adlai>
maybe you'd wanna do nonsense; I'd only wanna do prime-grade educational shenanigans, that would only become hooliganism when aped by IRC GPT bots that would glibly change a three to a four
<adlai>
if ixelp was broken from something in this channel, it was either the github link from beach , or the uguu from Bubblegumdrop
rbcarleton has quit [Remote host closed the connection]
rbcarleton has joined #commonlisp
<adlai>
theoretically it could have choked on some TLS weirdness while fetching either of those.
wacki has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
<adlai>
I can't imagine why it would choke after responding to the prompt younder sent; it even reported the second value, so I don't think it was anything with those.
<aeth>
but I did ,(not nil) in #clschool (long story) hours later
rgherdt has joined #commonlisp
<adlai>
oh, it's in more channels than what I see; then my curiosity is hopeless.
* adlai
moves on
<aeth>
I tried to do ,(ash 43 3) in #lispcafe and it didn't work
occ has joined #commonlisp
<aeth>
I think that was the first failure of it, about 4 hours ago. So there is a 2 hour window of uncertainty
<Bubblegumdrop>
would be very to get the names of the chat in lisp, (mass-hilight)
<Bubblegumdrop>
clever
notzmv has quit [Ping timeout: 272 seconds]
mi6x3m has joined #commonlisp
dnhester` has joined #commonlisp
notzmv- has joined #commonlisp
notzmv- is now known as notzmv
dnhester` has quit [Ping timeout: 260 seconds]
danza has joined #commonlisp
mgl has joined #commonlisp
<younder>
I figured out why I get sporadic errors when accessing tables. The session cookie times out. Seems hunchentoot respons is - if you try again - to retry the request by dding a session ID as a GET argument. So the solution is to capture the exception and retry the request. Once a new cookie has been established the GET argument goes away.
<younder>
This is way better that having to log in again.
<younder>
restart-case.. very lispy edi
Pixel_Outlaw has quit [Quit: Leaving]
* younder
feels smug having nailed that one
pranavats has left #commonlisp [Disconnected: Replaced by new connection]
pranavats has joined #commonlisp
chomwitt has joined #commonlisp
<younder>
'Lisp for the web' is a good enough tutorial, but there is very little material to span the gap from intermediate to production code. A 'hunchentoot cookbook' perhaps?
alcor has joined #commonlisp
shka has joined #commonlisp
<mi6x3m>
hey, what should I do if I want my ASDF system to be compiled when it's loaded
<mi6x3m>
do i need to specify compile somewhere?
<younder>
No, it should just happen in SBCL
danza_ has joined #commonlisp
<younder>
asdf:load-system
X-Scale has quit [Quit: Client closed]
danza has quit [Ping timeout: 264 seconds]
<beach>
mi6x3m: Why do you care whether the system is compiled?
<mi6x3m>
because I want compiled code instead of interpreted code :)
<mi6x3m>
performance not so good with interpreter
dnhester` has joined #commonlisp
<beach>
But you would want that for the files in the system, not for the system itself.
<mi6x3m>
of course
<beach>
But that's not what you said.
<mi6x3m>
:D
<beach>
I believe load-system first does compile-op then load-op.
<mi6x3m>
load-op by itself doesn't compile?
<beach>
I don't remember.
<mi6x3m>
hmm doesn't seem so
<beach>
You can check in your ~/.cache/common-lisp whether FASLs are created.
<mi6x3m>
yep
<mi6x3m>
can I request compilation in the asd file ?
<beach>
I don't know. Sorry. You would have to read the ASDF manual.
<mi6x3m>
yep checking it out thanks beach
<beach>
Sure.
<paulapatience>
beach: Missing period at end of Proposal section.
msavoritias has joined #commonlisp
<paulapatience>
beach: In "may rely on an error of type PACKAGE-ERROR to be signaled", s/to be/being/?
<beach>
Thanks.
<paulapatience>
Finally, "It seems appropriate if an error of type PACKAGE-ERROR would be signaled." -> "It seems appropriate for an error of type PACKAGE-ERROR would be signaled."
<paulapatience>
Oops, rather "It seems appropriate to signal an error of type PACKAGE-ERROR."
<beach>
Fixed and pushed. Thank you!
<paulapatience>
You're welcome
<adlai>
mi6x3m: if you prefer compilation universally, it's probably better to confirm that your implementation behaves that way, rather than fiddling with ASDF customization.
<mi6x3m>
I didn't quite get that
bendersteed has joined #commonlisp
<adlai>
even though it could be possible to add some tweak in your .asd file, to force compilation even in situations where some implementations might only load without compiling, that could be a terrible idea on implementations with extremely slow compilers and a few other pathological cases not worth detailing.
donleo has joined #commonlisp
<adlai>
I do realise the "just don't worry" recommendation is the most infuriating one to get in response to such questions.
<adlai>
so, my recommendation is that if you wanna worry about something, worry about your chosen implementation's LOAD behavior, rather than ASDF quirks.
chomwitt has quit [Ping timeout: 256 seconds]
<adlai>
then, even if some command flow issued by yourself or one of your system's dependents calls CL:LOAD directly rather than driving the compiler+loader only via ASDF's interface, it will behave the way you want on your preferred implementation.
pranavats has left #commonlisp [Disconnected: Replaced by new connection]
pranavats has joined #commonlisp
<adlai>
mi6x3m: tl;dr I'm not discouraging you from studying ASDF; rather, I'm encouraging you to study your chosen CL implementation, and discouraging you from customizing ASDF's behavior before you've considered the effects on ... at the very least, three implementations: your chosen one, one you can test although don't like using, and one you don't bother testing regularly although other folks might
<ixelp>
GitHub - Shinmera/cl-all: A script to evaluate lisp expressions in multiple implementations
<mi6x3m>
adlai, yeah, that's actually a good advice
<mi6x3m>
I was mostly irritated because the system is loaded through load-op and I wanted to ensure it's compiled
<mi6x3m>
but I think it'll modify the code to load through load-system instead
mi6x3m has quit [Remote host closed the connection]
<beach>
paulapatience: Probably. But I am not very good with that kind of stuff. I think if I identify the issues in the standard and write up the reports, I am doing something that I am relatively good at, compared to creating automation infrastructure.
<paulapatience>
Maybe when I get bored of manually pasting the test cases I will cook something up
<beach>
That would be great.
danse-nr3 has joined #commonlisp
<beach>
I also found it interesting that a single person (you) out of what 100+ here was willing to type an expression to their favorite Common Lisp implementation.
<paulapatience>
I can imagine the ultimate version of such a script would do something like Shinmera's portability.cl for each WSCL issue
<paulapatience>
Probably SBCL is most people's favorite CL implementation here
<beach>
I suppose.
<beach>
But I think several people have multiple implementations installed.
<paulapatience>
If a script such as I mentioned existed, it would probably be easier to get people with less common implementations to run it and just paste the results
<beach>
But I imagine the script would require all those implementations to be installed, no?
<paulapatience>
It could try running the implementation and if it doesn't find it try the next. That's what I think cl-all does.
synchromesh has quit [Read error: Connection reset by peer]
danse-nr3 has quit [Ping timeout: 264 seconds]
<Shinmera>
the biggest problem with cl-all is the inconsistency of implementations in their print behhaviour, so it can't cleanly list out the output for each. some have extraneous whitespace and newlines in there.
synchromesh has joined #commonlisp
rbcarleton has quit [Remote host closed the connection]
rbcarleton has joined #commonlisp
danse-nr3 has joined #commonlisp
danse-nr3 has quit [Remote host closed the connection]
danse-nr3 has joined #commonlisp
<Shinmera>
I suppose it could trim that out by default
<paulapatience>
The --version flags are also inconsistent
<paulapatience>
ABCL and GCL just ignore it and start the REPL
<paulapatience>
beach: I just realized I can install ABCL. So for ABCL 1.9.2, the fill-pointer errors are just ERRORs, and for make-package, (one "hello") returns NIL.
<beach>
I'll add that.
<beach>
Added and pushed.
dnhester` has quit [Ping timeout: 264 seconds]
ym has quit [Ping timeout: 260 seconds]
X-Scale has joined #commonlisp
<paulapatience>
Here's a stylistic question: Is there precedent for a WITH- macro to return the object which it binds around its body? Sometimes the object bound has dynamic-extent like in WITH-OPEN-FILE, but in my particular case, I want to initialize an object at the beginning, do some operations on it within the body, and call a function which completes the initialization at the end, returning it.
<beach>
I would imagine the default to be to return the values of the last form in the body, just like with PROGN.
<paulapatience>
An alternative would be to give a different name to the macro, something like CONSTRUCTING-NODE.
<Shinmera>
aight, made cl-all trim whitespace on -p
<paulapatience>
It's a bit similar to how in architecture.builder-protocol you have to make the AST-BUILDER and at the end call FINISH-NODE.
<paulapatience>
(If I understand the examples correctly.)
<paulapatience>
If you're accepting nitpicks, should CLisp not be written CLISP instead?
<Shinmera>
sure
dcb has quit [Quit: Connection closed for inactivity]
dino_tutter has joined #commonlisp
<paulapatience>
I'll try cl-all for the next WSCL issue then
<paulapatience>
Shinmera: Thanks for reminding me about LISP-IMPLEMENTATION-VERSION, by the way.
<Shinmera>
sure.
<Shinmera>
fwiw cl-all can also be loaded as a library to invoke lisp implementations if you want to do your own processing of the output
<Shinmera>
or supply programmatical input
<paulapatience>
Cool. I'll definitely use it then for the WSCL test script if I get around to it then.
<paulapatience>
The script will probably have to encode some per-issue logic, but there's no way around that I think.
green__ has joined #commonlisp
dnhester` has joined #commonlisp
<paulapatience>
Shinmera: Will you accept a PR adding GCL to cl-all?
<Shinmera>
sure
<Shinmera>
I could never get it to compile for me so
<paulapatience>
Ok, I'll work on that now.
yitzi has joined #commonlisp
<yitzi>
paulapatience: I haven't used it for a while and it was never really finished, but used the following to generate the test results in some of the WSCL issues. https://github.com/yitzchak/wscl-ct
<paulapatience>
yitzi: Is it private? I get a 404 error.
<yitzi>
Errr...probably. Just a sec
<yitzi>
Try now
<paulapatience>
See it now.
<paulapatience>
Ah, that is very cool.
waleee has quit [Ping timeout: 260 seconds]
<yitzi>
If you think you could do something (and if you want to) I could give you access.
<paulapatience>
(There is a spurious z in the ASD file.)
<paulapatience>
Yeah, I'd like to try.
<yitzi>
I do that a lot cause Z is next to the windows key used in gnome.
<yitzi>
Maybe it should be transferred to s-expressionists first.
<paulapatience>
I figure I could add the tests as beach adds the issues. So far I've kept up.
<paulapatience>
That sounds like a good idea.
msavoritias has joined #commonlisp
<yitzi>
K...give me a sec.
<yitzi>
Transferred. You should have an invite in your email.
<paulapatience>
Got it, thanks.
<yitzi>
If its not useful I won't be offended. Do whatever. :)
<paulapatience>
:)
X-Scale has quit [Quit: Client closed]
X-Scale has joined #commonlisp
<paulapatience>
Shinmera: The eval-with-lisp example in the readme is out of date, as it takes three arguments. Since with-rc is never specialized, perhaps it could become an optional or keyword argument?
<paulapatience>
s/eval-with-lisp/eval-in-lisp/
<Shinmera>
:shrug:
[[PSYCHIATRIST has joined #commonlisp
rbcarleton has quit [Remote host closed the connection]
rbcarleton has joined #commonlisp
traidare has joined #commonlisp
amb007 has quit [Remote host closed the connection]
tok has joined #commonlisp
green__ has quit [Ping timeout: 264 seconds]
yitzi has quit [Remote host closed the connection]
amb007 has joined #commonlisp
random-nick has joined #commonlisp
amb007 has quit [Ping timeout: 255 seconds]
chomwitt has joined #commonlisp
tok has quit [Remote host closed the connection]
SR-71 has quit [Ping timeout: 268 seconds]
varjag has quit [Remote host closed the connection]
yitzi has joined #commonlisp
<adlai>
beach: I have multiple implementations installed, although I rarely keep an image running for throwaway code, and hate chaffing the slime-repl history with things unrelated to whatever might be the project for that instance.
<beach>
I understand.
<adlai>
paulapatience: cl:with-output-to-string
<adlai>
it is a bit of a nuisance wrapping this with code that respects the values you'd expect from the implicit progn, yet still makes the string accessible; and I've not enough experience to declare any specific arrangement worth the defmacro.
* adlai
usually uses CL:WITH-OUTPUT-TO-STRING interactively for lifting out hints for debugging, and thus the forms rarely have enough lifetime to be considered preimages for subsequent DEFMACRO composition
<beach>
phoe: Are you around?
<adlai>
obviously it is also useful in certain other cases; only listed my own limited experience.
<paulapatience>
adlai: Right, thanks for the example.
danse-nr3 has quit [Ping timeout: 268 seconds]
pranavats has left #commonlisp [Disconnected: Hibernating too long]
josrr has joined #commonlisp
pranavats has joined #commonlisp
varjag has joined #commonlisp
[[PSYCHIATRIST has quit [Quit: Connection closed]
danse-nr3 has joined #commonlisp
<paulapatience>
Shinmera: Done now, promise.
azimut has joined #commonlisp
tyson2 has joined #commonlisp
green__ has joined #commonlisp
rbcarleton has quit [Remote host closed the connection]
rbcarleton has joined #commonlisp
scymtym has quit [Remote host closed the connection]
scymtym has joined #commonlisp
jonatack has quit [Ping timeout: 264 seconds]
green__ has quit [Ping timeout: 240 seconds]
awlygj has joined #commonlisp
green__ has joined #commonlisp
occ has quit [Ping timeout: 255 seconds]
<Shinmera>
I hope not.
occ has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
jjnkn has joined #commonlisp
tyson2 has joined #commonlisp
varjag has quit [Quit: ERC (IRC client for Emacs 27.1)]
rtypo has joined #commonlisp
tok has joined #commonlisp
chomwitt has quit [Ping timeout: 264 seconds]
tok has quit [Remote host closed the connection]
occ has quit [Read error: Connection reset by peer]
chsasank2 has joined #commonlisp
chsasank has quit [Ping timeout: 255 seconds]
chsasank has joined #commonlisp
chsasank2 has quit [Ping timeout: 272 seconds]
occ has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
kevingal has joined #commonlisp
eddof13 has joined #commonlisp
tyson2 has joined #commonlisp
dcb has joined #commonlisp
NotThatRPG has joined #commonlisp
thuna` has joined #commonlisp
traidare has quit [Ping timeout: 240 seconds]
lispmacs[work] has quit [Remote host closed the connection]
zetef has joined #commonlisp
rbcarleton has quit [Remote host closed the connection]
rbcarleton has joined #commonlisp
traidare has joined #commonlisp
jonatack has joined #commonlisp
santiagopim has joined #commonlisp
molson has quit [Ping timeout: 255 seconds]
occ has quit [Ping timeout: 264 seconds]
NotThatRPG has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
NotThatRPG has joined #commonlisp
josrr has quit [Remote host closed the connection]
yitzi has quit [Remote host closed the connection]
eddof13 has quit [Quit: eddof13]
<younder>
postmodern need a (execute (SQL_COMPILE <expression>)) to work on generated expression. Otherwise it just exclaims that is tot a STRING.. Sanity restored!
molson has joined #commonlisp
<younder>
store-table is in the box.
danse-nr3 has quit [Ping timeout: 240 seconds]
josrr has joined #commonlisp
danse-nr3 has joined #commonlisp
chsasank has quit [Quit: Ping timeout (120 seconds)]
dnhester` has quit [Ping timeout: 272 seconds]
chsasank has joined #commonlisp
mi6x3m has joined #commonlisp
<mi6x3m>
hey, is it possible to tell destructuring-bind to assign excessive variables to nil?
<_death>
&optional
eddof13 has joined #commonlisp
<_death>
although that will limit the ability to destructure.. you could have nested d-bind forms handling the optionals
<mi6x3m>
_death, so can I have like all variables optional?
<beach>
chsasank: if you have an IF with a single branch, you can use WHEN or UNLESS, provided the IF is in a position where the value is not needed.
<beach>
chsasank: If the value is needed, you should have an explicit `else' branch.
<beach>
chsasank: Using BINDING as a Boolean is a direct violation of the rules stated on page 13 of the LUV slides by Norvig and Pitman.
<beach>
chsasank: I would reverse the branches and use (IF (NULL BINDING)...)
notzmv has quit [Ping timeout: 268 seconds]
<beach>
chsasank: Your LOOP clauses are not indented correctly. The clause keywords should align.
<beach>
chsasank: You can use the WITH LOOP clause to avoid an explicit LET preceding. This will save you 2 horizontal spaces. Not important in this case, but it could be in more elaborate code.
<beach>
Same violation with BINDING-SIMPLE.
zetef has quit [Remote host closed the connection]
alcor has joined #commonlisp
Oddity has quit [Ping timeout: 264 seconds]
<beach>
chsasank: And you are still using FIRST and SECOND to take apart your data structure. As I suggested, use accessor functions so that the representation does not propagate all over your code.
<beach>
chsasank: It is also strange that a "rewrite" consists of a "pattern" and a "rewrite".
<beach>
chsasank: The association list should also be abstracted away. The name of the abstract type is "dictionary", so you should use functions such as LOOKUP rather than ASSOC.
<beach>
chsasank: As I recall, you have some programming experience, so I am sure you have already done stuff like that in the past.
yitzi has joined #commonlisp
<beach>
chsasank: I am not sure why you use INTERN rather than using symbols directly.
thuna` has quit [Read error: Connection reset by peer]
<beach>
chsasank: It seems silly to pass a literal string and then interning it, rather than passing a literal symbol.
<beach>
Anyway, time to go fix dinner for my (admittedly small) family.
<yitzi>
They may be under the impression that 2-21-0 won't be treated as a symbol.
<yitzi>
Or that the test function can be specified for assoc.
danse-nr3 has joined #commonlisp
danse-nr3 has quit [Remote host closed the connection]
danse-nr3 has joined #commonlisp
danse-nr3 has quit [Ping timeout: 240 seconds]
dnhester` has quit [Ping timeout: 268 seconds]
ldb has joined #commonlisp
ldb` has joined #commonlisp
<younder>
Forgetting to set the :test gets me all the time. eql doesn't work for strings. One of the reasons isolating implementation decisions is a good idea.
tyson2 has quit [Remote host closed the connection]
<chsasank>
thanks for the feedback beach. I refactored code over and over and I guess it's not great yet!
<younder>
Why is (query (:select '* :from 'employee :order-by 'empno)) wrong while (query "select * from employee order by empno") works?
dnhester` has joined #commonlisp
dnhester` has quit [Remote host closed the connection]
<adlai>
is there any more direct way to jump there, e.g. "clhs loop :with" ?
* adlai
wonders whether he'll ever actually use CL:LOOP-FINISH ... rather than only noting that someone could consider it more intuitive than big tangles of PROGs and worse
Pixel_Outlaw has joined #commonlisp
ldb has quit [Read error: Connection reset by peer]
ldb`` has joined #commonlisp
msavoritias has quit [Remote host closed the connection]
eddof13 has quit [Quit: eddof13]
cage has joined #commonlisp
<mi6x3m>
how can I quickly define some vars without let?
<mi6x3m>
local vars I mean
<mi6x3m>
something like "(quick-let (x y z w) ...)" all initialized to nil
Mon_Ouie has quit [Read error: Connection reset by peer]
dnhester` has joined #commonlisp
mgl has quit [Ping timeout: 256 seconds]
dnhester` has quit [Ping timeout: 268 seconds]
Mon_Ouie has joined #commonlisp
zxcvz has quit [Quit: zxcvz]
calx has joined #commonlisp
tyson2 has quit [Ping timeout: 252 seconds]
calx has quit [Client Quit]
dnhester` has joined #commonlisp
dnhester` has quit [Ping timeout: 252 seconds]
traidare has quit [Ping timeout: 240 seconds]
green__ has quit [Remote host closed the connection]
green__ has joined #commonlisp
<jjnkn>
jmercouris: that's what I'd do -- use an error handing function as a continuation
jjnkn has quit [Quit: leaving]
yitzi has quit [Remote host closed the connection]
mi6x3m has joined #commonlisp
<prxq>
Is there something like an accepted improvement of defclass? One that masks the tediousness with (slot-name :accessor slot-name :initarg :slot-name ... etc?
zetef has joined #commonlisp
<varjag>
no
<varjag>
sometimes you want slots with readers only, or no initargs, or even slot names different from accessor names
<jmercouris>
prxq: there is, define-class
dnhester` has joined #commonlisp
<prxq>
varjag: yeah but I'd prefer to have a way to do that sometimes rather than have to do it always.
<ixelp>
GitHub - atlas-engineer/nclasses: A `define-class` macro for less boilerplate
<prxq>
aeth: yeah I want that automatized.
<jmercouris>
prxq: yes
<prxq>
jmercouris: thx
<adlai>
jmercouris: think of any active condition handlers at the moment of the condition getting signalled as the proxy for your agency; would you prefer that frozen at the moment of spawning, as your currently proposed solution behaves, or dynamic ?
<jmercouris>
adlai: i've settled on implementing a synchronous and asynchronous variant that exhibit both types of behaviors
<adlai>
nothing quite like define-work
mgl has joined #commonlisp
chomwitt has joined #commonlisp
awlygj has quit [Quit: leaving]
NotThatRPG has quit [Ping timeout: 256 seconds]
NotThatRPG_ has joined #commonlisp
markb1 has quit [Read error: Connection reset by peer]
cage has quit [Quit: rcirc on GNU Emacs 29.2]
rbcarleton has quit [Remote host closed the connection]
rbcarleton has joined #commonlisp
pve has quit [Quit: leaving]
azimut has quit [Remote host closed the connection]
<ixelp>
GitHub - jthing/table-grinder: Database CRUD without the cruft
<younder>
It's about 3 weeks of work over the last month. Feel free to try it out and comment on it.
son0p has joined #commonlisp
amb007 has joined #commonlisp
NotThatRPG_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
amb007 has quit [Ping timeout: 256 seconds]
zetef_ has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
ldb` has quit [Ping timeout: 256 seconds]
synchromesh has quit [Read error: Connection reset by peer]
ldb`` has quit [Ping timeout: 268 seconds]
synchromesh has joined #commonlisp
wacki has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
jonatack has quit [Ping timeout: 264 seconds]
<adlai>
how dead is #clschool ?
mgl has quit [Ping timeout: 255 seconds]
amb007 has quit [Ping timeout: 255 seconds]
<adlai>
aeth: why _always_ add extra indirections between accessors and slots?
<adlai>
it seems to me like whatever is the co-evil of premature optimisation ; premature second-system-isation?
chomwitt has quit [Ping timeout: 255 seconds]
<adlai>
not all standard-class instances are interface classes of some package that require such indirection, yet encouraging extra verbosity for all proper classes effectively discourages liberal use of CLOS for internals and exploratory work
brokkoli_origina has quit [Ping timeout: 260 seconds]
<aeth>
there is no additional boilerplate, unlike in some languages, although I think languages are (decades later than CL) removing such boilerplate
brokkoli_origina has joined #commonlisp
<Kingsy>
for those of you using emacs / slime or sly. is there a trick to alow for proper indentation of documentation strings over multiple lines? it seems by default emcas aligns the newline hard left and doesnt indent with the rest of the docstring.
rgherdt has quit [Remote host closed the connection]
<varjag>
how that indented docstring is going to look when you call DOCUMENTATION on it?
<Kingsy>
varjag: I hadnt really thought about it. I suppose I was just trying to mitigate really ugly code when I have multiple lines on a docstring
<aeth>
the trick I use is "\n
<aeth>
it'll not indent it at all, but then it'll show up consistently in, say, DESCRIBE
<Kingsy>
ah yes ok. so \n will take care of formatting, but there is not a way to help make my files with these multiple lines look less messy and maintain inentation ?
<aeth>
for very long docstrings, it may be better to define them separately
<Kingsy>
aeth: what do you mean by define them seperately?
<aeth>
afaik, for a function or macro with a docstring, (describe 'foo) will use (documentation 'foo 'function) which is normally from the docstring
<ixelp>
CLHS: Standard Generic Function DOCUMENTATION...
<aeth>
so (setf (documentation 'foo 'function) "Your string here") will override it.
<Kingsy>
I guess I don't understand. it has to return a string. so regardless if you redefine this. you need to express a string over multiple lines. emacs will not intent that string properly.
<aeth>
So you can have the documentation strings (especially if they're long) exist separately from the definition entirely
<Kingsy>
perhaps this is impossible but that was whatI was wondering.
<Kingsy>
ahhh
<aeth>
Kingsy: I don't think it has to be a literal string
<aeth>
in the (setf (documentation ...) ...)
<aeth>
even though it does in defun/defmacro
<Kingsy>
hmm I think it does. (documentation .. ) needs to return a literal string according to the docs there
<aeth>
if you have a really, really long docstring that needs to exist separately so it doesn't look ugly in formatting, you could e.g. do (setf (documentation 'your-function 'function) (alexandria:read-file-into-string #P"whatever.md")) and I think it'd work.
<aeth>
though now you need to play the game of making sure it actually knows where to find the file.
<Kingsy>
oh thats intersting. ok good to know!
<aeth>
alternatively, you could play with a reader macro that generates setf documentation, etc... or just contain the indentation-breakage to its own file.
<Kingsy>
thanks for the info! something to think about
<aeth>
I think there are some libraries for this sort of thing, but if you're really particular about your docstrings, they'll probably do things their way instead of your way
<Kingsy>
I suppos I just find it normal to document a function with 5 or 6 lines of information. having it mess up my file indentation is just annoying so I was looking for a solution
<aeth>
I've personally gotten used to docstrings not being indented at all by doing "\n
<aeth>
it's similar to what a top-level ;;; comment would be (no indentation at all) except it's below rather than above the (defun ... line
<ixelp>
GitHub - outergod/cl-heredoc: Common Lisp reader heredoc dispatcher
<younder>
I knew I had seen it somewhere
<aeth>
yes, that seems to be the other approach, to make reader macros produce better docstring strings rather than produce the docstrings elsewhere
<aeth>
though that looks like that'll break syntax highlighting because nothing knows about it
<aeth>
documentation is something where there's a million different solutions, even in languages not as flexible as Common Lisp, because you could just add metadata to comments and parse the file separately if you really wanted to
<aeth>
or in something without comments (i.e. JSON) you can just have certain entries to a data structure that exist solely for documentation
shka has quit [Ping timeout: 240 seconds]
<Kingsy>
I don't really mind where it is, and that is a string literal, or that I would need to use \n Imore care about emcas forcing the align left and not putting the entire docstring at proper indentation with the function. hahah little things
<aeth>
I think that's on Emacs.
<Kingsy>
yeah
<younder>
Emacs is programmable.. In lisp..
<Kingsy>
haha true
<aeth>
The proper way to do it as a string literal would probably be (1) "\n at the start so the indentation is consistent throughout the docstring instead of the first line differing, but (2) aligning to the "\n rather than to the start of a line when you do this (which Emacs doesn't do), and (3) the lack of #2 in Emacs probably discourages more people from doing #1 to get properly-formatted docstrings in the
<aeth>
first place
<aeth>
so it's a bug in the Common Lisp indenter?
<aeth>
though I can see why people may want docstrings that have no literal indentation in the base docstring itself, i.e. the current behavior when you do #1
<Kingsy>
would be a nice thing to be able to turn off and on
<Kingsy>
but yep. I fully agree
<aeth>
it's emacs, there's a 50/50 chance you can already SETQ it, but the default probably should be the other way around (which, again, would be typical Emacs)
<Kingsy>
I will have a look around, thanks for the information.
<younder>
Go is the only language that gets it right. It skips the leading spaces and aligns to where the test began after "
<aeth>
All of the leading spaces? Because you often do want leading spaces that are more indented than everything else, so you need to be smart enough to know the "base" level of spaces
<aeth>
The problem with these sorts of things is that there's an infinite amount of details to pay attention to.
<aeth>
solve it and "documentation strings" becomes your life work :-p
<adlai>
... however, any editor that copes with standard CL should have no problem with this, as opposed to baroque read macros
<aeth>
If I'm reading that correctly, you'd have to do #.(format t "...") to produce a literal string in the position that defun/etc. expect it for docstrings ahead of macro expansion time (at reader time).
<aeth>
sorry, #.(format nil "...")
<aeth>
at that point you may just want a reader macro that lets you do FORMAT formatting stuff, although it should still have "..."s around it so it doesn't completely break syntax highlighting
<adlai>
aeth: in a docstring; e.g. (defun validate-bnf (bnf file &rest demons) #.(format () "~
<adlai>
..." ...)
<adlai>
and then your .lisp file has the BNF of BNF.
<aeth>
at that point doing it this way, outside of the defun, is probably better: (setf (documentation validate-bnf 'function) (format () "~
<aeth>
or, sorry, I think you need to quote validate-bnf in DOCUMENTATION
<adlai>
it's definitely not defensive style, in the sense that you could easily shoot yourself in the reader's foot with improperly escaped nested quotes in a long multiline documentation string
random-jellyfish has joined #commonlisp
<aeth>
you could do something like this: ,(defmacro document-function (name docstring) `(setf (documentation ',name 'function) (format nil ,docstring)))
<aeth>
Documents a function or macro with a docstring that has all of FORMAT available to it.")
<adlai>
it's reasonable to have some modest multiline documentation string; I only get pissed off when individual docstrings are so long that the screen no longer displays the (mapc 'describe (apropos-list "senility")) that prompted them.
zaymington has quit [Ping timeout: 264 seconds]
<aeth>
and technically DOCUMENT-FUNCTION could be a function if you're OK with quoting the first argument, but FORMAT is magic so implementations probably optimize FORMAT on a literal string like the macro produces