lucasta has quit [Remote host closed the connection]
decweb has joined #commonlisp
Inline has quit [Ping timeout: 264 seconds]
Inline has joined #commonlisp
zyd has quit [Killed (NickServ (GHOST command used by zyd`!~zyd@2607:fb90:351c:d941:843c:57c1:f370:55fe))]
zyd has joined #commonlisp
zyd has quit [Killed (NickServ (GHOST command used by zyd`!~zyd@2607:fb90:351c:d941:843c:57c1:f370:55fe))]
zyd_ has joined #commonlisp
zyd has joined #commonlisp
fe[nl]ix has quit [Quit: Valete!]
Fare has joined #commonlisp
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
fe[nl]ix has joined #commonlisp
rgherdt has quit [Ping timeout: 264 seconds]
josrr has quit [Remote host closed the connection]
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
st_aldini has joined #commonlisp
Lycurgus has quit [Quit: leaving]
szkl has joined #commonlisp
NicknameJohn has quit [Ping timeout: 264 seconds]
bilegeek has joined #commonlisp
msavoritias has joined #commonlisp
epony has quit [Remote host closed the connection]
epony has joined #commonlisp
azimut has quit [Ping timeout: 240 seconds]
st_aldini has quit [Quit: Client closed]
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
decweb has quit [Ping timeout: 276 seconds]
meritamen has joined #commonlisp
rogersm has joined #commonlisp
zyd has quit [Remote host closed the connection]
zyd_ is now known as zyd
Fare has quit [Ping timeout: 256 seconds]
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
meritamen has quit [Quit: I gotta go.]
zetef has joined #commonlisp
szkl has quit [Quit: Connection closed for inactivity]
shka has joined #commonlisp
Pixel_Outlaw has quit [Remote host closed the connection]
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
szkl has joined #commonlisp
zaymington has joined #commonlisp
rogersm has quit [Remote host closed the connection]
rogersm has joined #commonlisp
rogersm has quit [Remote host closed the connection]
rogersm has joined #commonlisp
ym has quit [Ping timeout: 256 seconds]
rogersm has quit [Remote host closed the connection]
rogersm has joined #commonlisp
rogersm has quit [Ping timeout: 264 seconds]
Cymew has joined #commonlisp
NicknameJohn has joined #commonlisp
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
rogersm has joined #commonlisp
scymtym has quit [Remote host closed the connection]
rogersm has quit [Remote host closed the connection]
amb007 has quit [Ping timeout: 260 seconds]
amb007 has joined #commonlisp
King_julian has joined #commonlisp
bilegeek has quit [Quit: Leaving]
King_julian has quit [Ping timeout: 260 seconds]
rogersm has joined #commonlisp
varjag has joined #commonlisp
rogersm has quit [Remote host closed the connection]
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
rogersm has joined #commonlisp
mgl_ has joined #commonlisp
bendersteed has joined #commonlisp
treflip has joined #commonlisp
dino_tutter has joined #commonlisp
NicknameJohn has quit [Ping timeout: 260 seconds]
pranavats has left #commonlisp [Disconnected: Replaced by new connection]
pranavats has joined #commonlisp
epony has quit [Remote host closed the connection]
epony has joined #commonlisp
traidare has joined #commonlisp
toadlicker has joined #commonlisp
Jach has quit [Remote host closed the connection]
Jach has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
King_julian has joined #commonlisp
donleo has joined #commonlisp
dcb has quit [Quit: Connection closed for inactivity]
danse-nr3 has joined #commonlisp
zetef has quit [Remote host closed the connection]
zetef has joined #commonlisp
zetef has quit [Ping timeout: 276 seconds]
King_julian has quit [Remote host closed the connection]
chomwitt has joined #commonlisp
King_julian has joined #commonlisp
rogersm has quit [Remote host closed the connection]
mesaoptimizer is now known as mesaoptimizer_
amb007 has quit [Ping timeout: 268 seconds]
amb007 has joined #commonlisp
King_julian has quit [Ping timeout: 256 seconds]
mesaoptimizer has joined #commonlisp
chomwitt has quit [Ping timeout: 256 seconds]
puke has joined #commonlisp
puke has quit [Excess Flood]
puke has joined #commonlisp
anticrisis has quit [Read error: Connection reset by peer]
snits has quit [Quit: No Ping reply in 180 seconds.]
amb007 has quit [Ping timeout: 245 seconds]
snits has joined #commonlisp
Inline has quit [Ping timeout: 260 seconds]
rogersm has joined #commonlisp
rgherdt has joined #commonlisp
Inline has joined #commonlisp
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
rgherdt has quit [Client Quit]
rogersm has quit [Ping timeout: 240 seconds]
rgherdt has joined #commonlisp
dnhester26 has quit [Read error: Connection reset by peer]
danse-nr3 has quit [Read error: Connection reset by peer]
khrbtxyz has quit [Ping timeout: 260 seconds]
khrbtxyz has joined #commonlisp
danse-nr3 has joined #commonlisp
rgherdt has quit [Quit: Leaving]
rgherdt has joined #commonlisp
Lycurgus has joined #commonlisp
rogersm has joined #commonlisp
rogersm has quit [Ping timeout: 246 seconds]
dnhester26 has joined #commonlisp
decweb has joined #commonlisp
<dnhester26>
Can anyone think of important topics to cover in the technical reference besides those that are in the specification and mop chapters 5 and 6?
<dnhester26>
I was thinking that concurrency is probably essential, so the bordeaux and maybe another library related to that
<dnhester26>
Then I thought that a lot of the trivial-* packages are probably also essential at this stage to programming in CL and they are independent (mostly) of the implementations, so it may make sense to include them
<dnhester26>
I thought as well as having table comparisons of the implementations, but then we would have to think what the relevant comparisons are. I've only done general things, always trying to make it portable and not sbcl specific so I wouldn't know
<dnhester26>
Any important comparisons between the implementations that are really important to know?
<dnhester26>
I figure that presenting a table of trivial-* to implementation support is important
makomo has quit [Ping timeout: 264 seconds]
<splittist>
I can see that it might be useful to refer to the trivial- smoothers in the relevant chapters (just like Closer-to-MOP). I don't think humanity understands enough about how to program with concurrency to include that: there are plenty of Awsome-X resources folks can find.
toadlicker has quit [Remote host closed the connection]
<splittist>
problem solved! It's never a resources problem, it's a discovery/remembering problem... (:
<Shinmera>
:/
<Shinmera>
Sometimes I wonder if the work I do were more effective had I the energy to spend time on advertising it, rather than just on making stuff.
<Shinmera>
Or in other words, if I write software but nobody's there to see it, did it ever get made at all
<Equill>
Can relate :)
puke has quit [Remote host closed the connection]
<dnhester26>
hahaha
<dnhester26>
I hear
<dnhester26>
thanks, ok, in that case I think it's very important to at least advertise those resources in the reference
<dnhester26>
tht way at least people know where to go
<dnhester26>
Though I was hoping to be a kind of one stop shop for documentation without the need to start going around the web and often having to rely on the web archives because the servers are down
<dnhester26>
splittist: Shinmera: thanks for your answers! :D
<Shinmera>
it's hosted on github, so it wouldn't fare any worse than yours
<Shinmera>
I guess the only caveat is the domain that I have to pay for
yitzi has joined #commonlisp
rogersm has joined #commonlisp
<decweb>
Anybody got a documentation suggestion that is based on the hyperspec, but with more examples? Not a separate reference, e.g. all the cookbooks and stuff. Just a hyperspec with examples, which are often completely lacking there.
azimut has quit [Remote host closed the connection]
makomo has joined #commonlisp
azimut has joined #commonlisp
miracle_fox has joined #commonlisp
st_aldini has joined #commonlisp
AndreiDuma has joined #commonlisp
rogersm has joined #commonlisp
rogersm has quit [Remote host closed the connection]
rogersm has joined #commonlisp
rogersm has quit [Remote host closed the connection]
toadlicker has joined #commonlisp
igemnace has joined #commonlisp
rogersm has joined #commonlisp
danse-nr3 has quit [Ping timeout: 260 seconds]
overclucker_ has quit [Quit: ZNC 1.7.2+deb3 - https://znc.in]
overclucker has joined #commonlisp
chomwitt has joined #commonlisp
khrbtxyz has quit [Ping timeout: 260 seconds]
random-nick has joined #commonlisp
<decweb>
Thanks dnhester26, I'll take a look. I can usually make do, but I've been trying to persuade various Clojure developers to give Common Lisp a chance, and wanted to point them at something better than the hyperspec, to help people who aren't ready to put on their waders to learn the language.
AndreiDuma has quit [Ping timeout: 260 seconds]
khrbtxyz has joined #commonlisp
<dnhester26>
decweb: The parsing was not perfect though, there are new lines in different places, not all code blocks (those that are not in dictionary items in particular) and tables are formatted properly to look nice
<dnhester26>
Hope it's helpful
AndreiDuma has joined #commonlisp
danse-nr3 has joined #commonlisp
AndreiDuma has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
a51 has joined #commonlisp
waleee has quit [Ping timeout: 256 seconds]
cage has joined #commonlisp
rogersm has quit [Remote host closed the connection]
Fare has joined #commonlisp
traidare has quit [Ping timeout: 252 seconds]
jonatack has quit [Ping timeout: 264 seconds]
gooba has quit [Remote host closed the connection]
gooba has joined #commonlisp
Fare has quit [Ping timeout: 245 seconds]
bendersteed has quit [Remote host closed the connection]
bendersteed has joined #commonlisp
gooba_ has joined #commonlisp
goober__ has joined #commonlisp
gooba has quit [Ping timeout: 276 seconds]
Cymew has quit [Quit: Konversation terminated!]
gooba_ has quit [Ping timeout: 268 seconds]
gooba_ has joined #commonlisp
goober__ has quit [Ping timeout: 252 seconds]
tyson2 has joined #commonlisp
rogersm has joined #commonlisp
Fare has joined #commonlisp
danse-nr3 has quit [Ping timeout: 252 seconds]
traidare has joined #commonlisp
varjag has quit [Quit: ERC (IRC client for Emacs 27.1)]
danse-nr3 has joined #commonlisp
occ has joined #commonlisp
dcb has quit [Quit: Connection closed for inactivity]
AetherWind has joined #commonlisp
zetef has joined #commonlisp
zetef has quit [Ping timeout: 246 seconds]
Inline has quit [Quit: Leaving]
danse-nr3 has quit [Ping timeout: 246 seconds]
miracle_fox has quit [Quit: Client closed]
beach` has joined #commonlisp
beach has quit [Killed (NickServ (GHOST command used by beach`!~user@2a01:cb19:683:8800:e40a:4633:2003:1c10))]
beach` is now known as beach
dnhester26 has quit [Read error: Connection reset by peer]
kevingal has quit [Ping timeout: 264 seconds]
thuna`` has joined #commonlisp
dnhester26 has joined #commonlisp
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
thuna`` has quit [Read error: Connection reset by peer]
thuna`` has joined #commonlisp
zetef has joined #commonlisp
thuna`` has quit [Read error: Connection reset by peer]
thuna`` has joined #commonlisp
msavoritias has quit [Ping timeout: 256 seconds]
a51 has quit [Quit: WeeChat 4.1.2]
NicknameJohn has joined #commonlisp
NotThatRPG has joined #commonlisp
<NotThatRPG>
Anyone ever used one of the CL libraries for SQLite? Recommendations pro or con?
Fare has quit [Ping timeout: 276 seconds]
ym has joined #commonlisp
rogersm has quit [Remote host closed the connection]
rogersm has joined #commonlisp
yitzi has quit [Remote host closed the connection]
makomo has quit [Ping timeout: 245 seconds]
chomwitt has quit [Ping timeout: 255 seconds]
khrbtxyz has quit [Ping timeout: 260 seconds]
zetef has quit [Ping timeout: 256 seconds]
khrbtxyz has joined #commonlisp
thuna`` has quit [Quit: Quit]
NicknameJohn has quit [Ping timeout: 252 seconds]
tyson2 has quit [Read error: Connection reset by peer]
bendersteed has quit [Quit: bendersteed]
danse-nr3 has joined #commonlisp
Fare has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
semarie has quit [Quit: WeeChat 4.1.2]
Pixel_Outlaw has joined #commonlisp
epony has quit [Quit: QUIT]
jmdaemon has quit [Ping timeout: 276 seconds]
zxcvz has joined #commonlisp
semarie has joined #commonlisp
Fare has quit [Ping timeout: 252 seconds]
Inline has joined #commonlisp
NicknameJohn has joined #commonlisp
makomo has joined #commonlisp
rogersm has quit [Remote host closed the connection]
azimut has quit [Ping timeout: 240 seconds]
tibfulv has quit [Remote host closed the connection]
NicknameJohn has quit [Ping timeout: 264 seconds]
rogersm has joined #commonlisp
donleo has quit [Remote host closed the connection]
tibfulv has joined #commonlisp
donleo has joined #commonlisp
azimut has joined #commonlisp
rogersm has quit [Ping timeout: 252 seconds]
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
dnhester26 has joined #commonlisp
Eoco has quit [Ping timeout: 252 seconds]
zxcvz has quit [Quit: zxcvz]
Eoco has joined #commonlisp
azimut has quit [Remote host closed the connection]
jonatack has joined #commonlisp
azimut has joined #commonlisp
danse-nr3 has quit [Ping timeout: 252 seconds]
jrx has joined #commonlisp
Eoco has quit [Remote host closed the connection]
waleee has joined #commonlisp
jrx has quit [Client Quit]
Eoco has joined #commonlisp
bjorkint0sh has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
bjorkintosh has quit [Ping timeout: 276 seconds]
Eoco has quit [Remote host closed the connection]
<dnhester26>
NotThatRPG: i used mito and worked fine, mito is an orm, but it's built in dbi and sxql
Eoco has joined #commonlisp
<dnhester26>
however working with sqlite I had all sorts of issues and then realized it was because of sqlite, not the libraries... apparently you can't do very long or complicated queries
<dnhester26>
it's actually very limiting
<dnhester26>
could be mito has an in memory db you can use
st_aldini has quit [Quit: Client closed]
danse-nr3 has joined #commonlisp
Eoco has quit [Remote host closed the connection]
Eoco has joined #commonlisp
jonatack has quit [Ping timeout: 256 seconds]
Eoco has quit [Client Quit]
epony has joined #commonlisp
Inline has quit [Quit: Leaving]
jonatack has joined #commonlisp
attila_lendvai has joined #commonlisp
Inline has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
msavoritias has joined #commonlisp
tyson2 has joined #commonlisp
Kyuvi has joined #commonlisp
Eoco has joined #commonlisp
NicknameJohn has joined #commonlisp
mgl_ has quit [Ping timeout: 255 seconds]
AndreiDuma has joined #commonlisp
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
scymtym has joined #commonlisp
danse-nr3 has quit [Remote host closed the connection]
danse-nr3 has joined #commonlisp
yitzi has joined #commonlisp
zetef has joined #commonlisp
NotThatRPG_ has joined #commonlisp
<NotThatRPG_>
dnhester26: Thanks! Good to know. I actually have a very limited need: I just want the equivalent of a random-access file with indexing on 2 dimensions. So hoping sqlite3 will be enough.,
chomwitt has joined #commonlisp
NotThatRPG has quit [Ping timeout: 260 seconds]
zetef has quit [Ping timeout: 256 seconds]
zaymington has quit [Ping timeout: 268 seconds]
azimut has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dcb has joined #commonlisp
azimut has joined #commonlisp
danse-nr3 has quit [Ping timeout: 268 seconds]
amb007 has joined #commonlisp
flip214 has quit [Ping timeout: 260 seconds]
jonatack has quit [Ping timeout: 256 seconds]
Fare has joined #commonlisp
Eoco has quit [Quit: WeeChat 4.1.1]
Eoco has joined #commonlisp
overclucker_ has joined #commonlisp
overclucker has quit [Read error: Connection reset by peer]
dnhester26 has quit []
msavoritias has quit [Ping timeout: 245 seconds]
Fare has quit [Ping timeout: 264 seconds]
Kyuvi has quit [Ping timeout: 250 seconds]
chomwitt has quit [Ping timeout: 256 seconds]
szkl has quit [Ping timeout: 255 seconds]
icebarf has quit [Remote host closed the connection]
tyson2 has quit [Read error: Connection reset by peer]
icebarf has joined #commonlisp
szkl has joined #commonlisp
varjag has joined #commonlisp
<varjag>
so is there any good service for handling developer bounties?
<varjag>
bountysource looks kindof sick
<aeth>
specific to Common Lisp? almost certainly not
<varjag>
i'm not sure what has to be specific about common lisp
rogersm has joined #commonlisp
<varjag>
one could say in description, "add this and this to that common lisp library", no
<ixelp>
Introduction | Common Lisp (New) Language Reference
<yottabyte>
decweb: yes, I agree, I find the hyperspec leaving much to be desired, I don't know what the heck is going on there much of the time
<yottabyte>
I did some clojure years ago, I found it to be a much better developer experience, honestly, but I guess that's because it's so opinionated. at this point I've done way more cl, but yeah
<yottabyte>
I can see it being hard to get seasoned clojure devs to move to cl. but indeed, they are probably seasoned clojure devs because of the tooling and the jvm stuff so they wouldn't want to change
rogersm has quit [Remote host closed the connection]
rogersm has joined #commonlisp
rogersm has quit [Remote host closed the connection]
rogersm has joined #commonlisp
rogersm has quit [Remote host closed the connection]
rogersm has joined #commonlisp
rogersm has quit [Remote host closed the connection]
mgl_ has quit [Ping timeout: 252 seconds]
NicknameJohn has quit [Ping timeout: 245 seconds]
AndreiDuma has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<ixelp>
GitHub - s-expressionists/wscl: Sources of the "Well Specified Common Lisp" specification which is based on the final dr [...]
<random-nick>
it's a project to make a CL spec with various clarifications
<random-nick>
from the README: Well Specified Common Lisp is intended as a more strict version of the current Common Lisp standard. It is more strict in that it attempts to specify required behavior of implementations in many cases where the current Common Lisp standard is either silent on the subject, or specifically mentions unspecified behavior. We intend to accomplish this work in an as uncontroversial way as possible. Specifically, we mainly want to
<random-nick>
consolidate behavior that most existing Common Lisp implementations already agree upon.
AndreiDuma has joined #commonlisp
<decweb>
yottabyte: I'm not actively trying to get Clojure developers to switch to CL, just open their eyes to its existence. And there are some problems for which clojure is not as nice as common lisp. Writing tree algorithms, for example. Anyway, a lot of clojure programmers have never even used another lisp, so this is all educational for them.
<decweb>
The other analogy I use is that sometimes you do not want to take the 18 wheel truck out for a quick grocery store errand, the JVM being that truck.
<yottabyte>
ha, definitely
phantomics_ has joined #commonlisp
phantomics has quit [Ping timeout: 245 seconds]
st_aldini has joined #commonlisp
rgherdt has quit [Ping timeout: 256 seconds]
akoana has joined #commonlisp
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
khrbtxyz has quit [Ping timeout: 256 seconds]
khrbtxyz has joined #commonlisp
tyson2 has joined #commonlisp
yvm has joined #commonlisp
ym has quit [Ping timeout: 260 seconds]
<yitzi>
If they really need the JVM then just use ABCL.
rogersm has joined #commonlisp
rogersm has quit [Remote host closed the connection]
<bjorkint0sh>
alternatively, when you need to haul a shipping container, a cute little vespa will simply not do.
rogersm has joined #commonlisp
akoana has quit [Quit: Reconnecting]
akoana has joined #commonlisp
treflip has quit [Ping timeout: 260 seconds]
agm has joined #commonlisp
anticrisis has joined #commonlisp
miracle_fox has joined #commonlisp
rendar has quit [Ping timeout: 264 seconds]
mgl_ has joined #commonlisp
miracle_fox has quit [Quit: Client closed]
<agm>
i don't understand something about iteration control with destructuring in LOOP: if I evaluate (loop for (i . j) in nil initially (write i)) in sbcl, I get an output of NIL, but how can I or J be bound if nil can't be destructured in (i . j)?
jonatack has joined #commonlisp
<paulapatience>
,(car nil)
<ixelp>
(car nil) => NIL
<paulapatience>
,(cdr nil)
<ixelp>
(cdr nil) => NIL
<agm>
ok, but (destructuring-bind (i . j) nil) doesn't work
<paulapatience>
SBCL's loop does not use destructuring-bind for that
<paulapatience>
Try macroexpanding it to see
<agm>
ok
zetef has joined #commonlisp
mgl_ has quit [Ping timeout: 256 seconds]
zetef has quit [Read error: Connection reset by peer]
zetef has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
tyson2 has joined #commonlisp
Kyuvi has joined #commonlisp
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
mgl_ has joined #commonlisp
st_aldini has quit [Quit: Client closed]
<yitzi>
There is also Khazern if you want to see what loop looks like without the implementation specific stuff like sb-loop::loop-desetq
anticrisis has quit [Read error: Connection reset by peer]
rogersm has quit [Quit: Leaving...]
traidare has quit [Ping timeout: 256 seconds]
cage has quit [Quit: rcirc on GNU Emacs 29.1]
anticrisis has joined #commonlisp
AndreiDuma has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Kyuvi has quit [Quit: Client closed]
varjag has quit [Ping timeout: 264 seconds]
Kyuvi has joined #commonlisp
pranavats has left #commonlisp [Disconnected: Hibernating too long]
Kyuvi has quit [Ping timeout: 250 seconds]
tyson2 has quit [Remote host closed the connection]
<Kingsy>
I have a question if anyone is around, how come if I set a variable in a (let) statement it is a defparameter, then I update that value within the let, then I reference the value using the variable I set in the let assignment its not updated? does it create a copy of the variable rather than point to the actual value?!
zetef has quit [Read error: Connection reset by peer]
<thuna`>
Kingsy: That is quite difficult to parse. Could you maybe reword it?
<Kingsy>
thuna`: tbh I think I have jus answered the question myself. when you assign a variable using let it creates a new variable which is scoped to that statement
<Kingsy>
so if I create a global var, do a let which assigns that global var to a variable, update the let variable, the global var is untouched.
<thuna`>
Yes, although if you do, say, (setf (car let-variable) new-thing), you will see that change reflected in the global variable as well, so beware
<Kingsy>
ooo ok haha so that is over my head for now! :D I need to ponder on that one. sooo
<Kingsy>
thuna`: I am currently learning lisp. and I have just written a quik rock paper scissors game... if I pastebin it could you give me some pointers? BUT that being said I don't want you to get too complicated. I am only learning so basic concepts for now but I would appreciate it
Fare has joined #commonlisp
<Kingsy>
thuna`: when I say pointers btw. I mean the thing now runs just fine, it works, so I am more just looking for input on anything strange I am doing and better ways of approaching things :D hah not a debug session. it runs just fine
<Kingsy>
took me about an hour and a half though.. and for 60 some lines that isnt the best.. haha you can tell I am new to this :D
<thuna`>
Kingsy: Sure, I don't mind helping (although do note that I am by no means an authority [or even very reliable]). There is also a channel called, uhh, #lispschool, or something similar (someone please correct me if I'm wrong), where you can expect higher quality answers.
<aeth>
with lists it's a bit more complicated than that
<aeth>
because if you append to the front, it won't be reflected in *x*
<thuna`>
The difference is between setting x's binding and setting x's value, where the latter is shared with *x*. I don't know how to explain this in simpler terms, unfortunately.
<aeth>
there's also the issue of defining a new *x* which behaves differently than defining a new x because globals are dynamically scoped instead of lexically scoped (which is why we put the earmuffs around these variables by convention)
<thuna`>
s/setting x's value/modifying x's value
<Kingsy>
https://bpa.st/PRSQ <- thoughts welcome! :) would love tips - but please be gentle haha
<ixelp>
View paste PRSQ
<aeth>
Kingsy: the first thing that stands out is...
<aeth>
you can just do e.g. :rock :paper :scissors instead of "rock" "paper" "scissors"
<paulapatience>
You could loop instead of recursively calling prompt
<Kingsy>
aeth: I didnt do that because I wanted to compare with the return value of (read-line) and I know that returns a string
<aeth>
ah
<paulapatience>
Also you should probably initialize the random state outside the function
<aeth>
I think it would be more common to parse the read input into a data structure first
<Kingsy>
paulapatience: I did think about that. but I just went recursive because I couldnt see it having much impact. but thankyou
<Kingsy>
paulapatience: why? in terms of random state. just curious
<Kingsy>
aeth: hmm what do you mean? its justa string righr?
<paulapatience>
Well, you don't need to make a new random state each time. With a given random state, calling random will give you a new random number. What you're doing is seeding the rng on each call.
<paulapatience>
It works, but is redundant
<thuna`>
Kingsy: You can convert it to a keyword via intern
<aeth>
or you can match it against a regex or similar and based on that return a keyword or error
<Kingsy>
paulapatience: ahh so this I didnt understand from the hyperspec. I don't really know what this random state is, why do I even need that? cant I just use (random some-list) without the state? I included it because it seemed important to make it "truely random"
<Kingsy>
thuna`: ok thats lost me. perhaps I need to look up what you mean there.
<thuna`>
Kingsy: Also, a minor point, but (incf (cdr (assoc winner *score*))) is the canonical way to write (setf (cdr (assoc winner *score*)) (+ 1 (cdr (assoc winner *score*))))
<aeth>
consider e.g. ,(string-equal "rock" "ROCK")
<ixelp>
(string-equal "rock" "ROCK") => T
<aeth>
the case-insensitive
<Kingsy>
thuna`: ahhhh this is the kinda thing I want to know! I absolutely hated writing (setf (cdr (assoc winner *score*)) (+ 1 (cdr (assoc winner *score*)))) <_ its so painful
<paulapatience>
Indeed you may omit it. The only reason to make one is if you want to generate the same sequence of numbers, by providing a copy of a random state.
<thuna`>
Kingsy: `intern' is a function that takes a string, and converts that into a symbol. There is more nuance obviously but it's not needed at this stage
<Kingsy>
paulapatience: thankyou! very good to know! apprecaite the information
<aeth>
you could do a COND where you try to string-equal the user input against "rock", "paper", or "scissors" and then return :rock, :paper, or :scissors with the default t clause being the error message
<aeth>
which in this case wouldn't be an ERROR since you want the user to keep entering input
<thuna`>
Kingsy: Also, an even more minor point, but you can do (1+ thing) instead of (+ 1 thing)
<aeth>
string= is the case-sensitive version btw
<Kingsy>
aeth: oh ok! this is interesting. I have never written a COND before. I am going to look this up. tomorrow I am going to try and write something a bit more complicated (but only a bit haha) probably hangman or something so I wll read about COND before I start.
<aeth>
this normalizes a bunch of different possible mostly-valid input into one thing instead of requiring an exact match
<aeth>
string=, string-equal, regex (via e.g. cl-ppcre), etc., are possibilities
<Kingsy>
aeth: ah this struct could probably simplify things
<Kingsy>
thuna`: thanks for the 1+ nudge too! didnt know that either. I am going tohave to run back through this chat and add all this to my notes. thoughtoyu
<Kingsy>
thankyou **
<Kingsy>
aeth: I think case insensitivity is probably what I want here. I don't care what the user inputs really as long as its the correct word
<aeth>
yes, so string-equal, or use a regex from cl-ppcre if you want to be even more generous
dra has joined #commonlisp
<aeth>
you may also match between more than one possibility with an OR, e.g. (or (string-equal choice "rock") (string-equal choice "r"))
<Kingsy>
aeth: by generous do you mean, allow for spaces things like this?
<aeth>
yes, you'd probably want to use regex for ignoring things like spaces, punctuation, etc.
<aeth>
you can kind of get there without it though
<Kingsy>
got you yep
epony has quit [Remote host closed the connection]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
<aeth>
but ignoring case is more important... pulling in a whole regex library to accept " rock " may not be
<Kingsy>
makes sense
<Kingsy>
well, thanks for the thoughts and advice everyone - aeth thuna` and paulapatience, I very much appreciate it. I'll make some quick edits then start on something else thats simple
mgl_ has quit [Ping timeout: 246 seconds]
<aeth>
just to be clear... you don't really need a data structure beyond just a keyword because there's only one simple possible action
<aeth>
more elaborate things may need more elaborate things
<Kingsy>
aeth: why would you consider a string not a data structure, but parsing that string with intern to generate a symbol is a structure? they are just different types no?
<Kingsy>
I don't see how one is better than the other
<aeth>
when you have a string you compare with string= (normally) or string-equal (case-insensitive) or similar, character by character
<aeth>
when you have a symbol, you compare by EQL
<Kingsy>
yep this makes sense
<aeth>
,(eql "FOO" "FOO")
<ixelp>
(eql "FOO" "FOO") => NIL
<aeth>
,(eql (intern "FOO") (intern "FOO"))
<ixelp>
(eql (intern "FOO") (intern "FOO")) => T
<Kingsy>
haha yeah I fell into this trap and it confusd me :D
Fare has quit [Ping timeout: 246 seconds]
<aeth>
so a symbol is a bit of extra stuff on top of a string, and is guaranteed that FOO and FOO are the same
Kyuvi has joined #commonlisp
<aeth>
though a string is technically a data structure, too, an array of characters
<aeth>
programming languages with immutable strings may have strings that only behave like CL's symbols
<Kingsy>
so are we just saying that when programatically dealing with items, data, keys, conditions its best practice to use symbols rather than strings?
agm has quit [Ping timeout: 255 seconds]
<aeth>
usually, yes
<aeth>
they are case sensitive, btw, e.g. ,(progn '|This is still a symbol.|)
<ixelp>
(progn '|This is still a symbol.|) => |This is still a symbol.|
<Kingsy>
this is great advice thankyou. I did think it was a bit weird when I was getting NIL for eql on a string. I read about it and ended up on string=
<Kingsy>
I didnt think they were? :rock and :ROCK are not sql ?
<Kingsy>
eql?
<aeth>
but equal and equalp exist if you do want to use strings, even in e.g. hash table keys
<aeth>
Kingsy: ,(eql :rock :ROCK)
<ixelp>
(eql :rock :ROCK) => T
decweb has quit [Ping timeout: 256 seconds]
<aeth>
Kingsy: ,(eql :|rock| :ROCK)
<ixelp>
(eql :|rock| :ROCK) => NIL
<Kingsy>
sorry didnt you juse say they are case sensitive?
<aeth>
Kingsy: ,(eql :|ROCK| :rock)
<ixelp>
(eql :|ROCK| :rock) => T
<aeth>
a bit confusing here
<aeth>
without the ||s it will (by default) upcase with :keywords or 'symbols
<Kingsy>
oh hang on, I don' know what |rock| is. I have never seen | this notation in a symbol before
<Kingsy>
ohhh right
<Kingsy>
hahaha that sounds like something I will never need but is good to know! :D
<aeth>
if they had chosen to downcase instead of to upcase there wouldn't be much that was confusing with these. Oh well.
<aeth>
because you're usually writing in lower case
<Kingsy>
yeah true
<aeth>
but we usually write keywords and symbols in lower case and pretend that symbols are case insensitive, but underneath they're very close to strings
<aeth>
in fact, ,(string= :rock "ROCK")
<ixelp>
(string= :rock "ROCK") => T
<aeth>
some of the string functions support treating them like strings!
<Kingsy>
yeah that string= execution makes no sense to me
decweb has joined #commonlisp
zaymington has joined #commonlisp
<gilberth>
Kingsy: It's the reader that when reading symbols turns lower-case letters into upper case unless told otherwise.
<gilberth>
That is :rock and :ROCK read as the very same symbol. That symbol has the name "ROCK".
<aeth>
But || tells it to be literal
<aeth>
like ""
<aeth>
in fact
<Kingsy>
no thats fine, but :ROCK isnt "ROCK" right? surely the addition of : and the "" have meaning? :ROCK isnt a string.. its a symbol. so why does string= think its a string?
<aeth>
,(progn :||)
<ixelp>
(progn :||) => :||
<aeth>
yes, :|| and '|| exist, made from ""
<aeth>
,(intern "")
<ixelp>
(intern "") => ||; NIL
<gilberth>
As aeth noted some string functions like STRING= also take symbols instead of strings. So the name of the first argument, the symbol :ROCK (either written as :rock or :ROCK) is compared to "ROCK".
Gleefre has quit [Remote host closed the connection]
epony has joined #commonlisp
<aeth>
Kingsy: :ROCK is KEYWORD:ROCK i.e. the symbol in the keyword package with the symbol-name "ROCK"
dino_tutter has quit [Ping timeout: 255 seconds]
<aeth>
,(symbol-name :rock)
<ixelp>
(symbol-name :rock) => "ROCK"
Gleefre has joined #commonlisp
Fare has joined #commonlisp
<Kingsy>
a bit clearer, thank you
<aeth>
so string= underneath is just doing something like (or (and (symbolp foo) (symbol-name foo)) foo) or the equivalent (if (symbolp foo) (symbol-name foo) foo)
<edgar-rft>
plese note that the case conversion from symbols to strings depends on cl:readtable-case
<aeth>
because a symbol is kinda like a string in some cases
<aeth>
edgar-rft: right, which is why to be a bit defensive when working with symbols you can do something like ,(symbol-name '#:foo)
<ixelp>
(symbol-name '#:foo) => "FOO"
<gilberth>
Historical note: Very early LISPs didn't have strings and used symbols instead.
dustinm` has quit [Quit: Leaving]
<aeth>
That last s-expression may evaluate to "foo" or "FOO" -- almost certainly "FOO", but who knows?
<aeth>
#:foo being yet another special case on the symbol system, in this case not belonging to a package at all
<Kingsy>
yeah this is where I am getting a bit lost. I don't really know the meaning of #: yet, and #' etc etc I need to figure that out
<aeth>
i.e. ,(symbol-package '#:foo) ,(symbol-package :foo) ,(symbol-package 'foo)
<aeth>
all of these have to be quoted except :foo which can be quoted anyway like ':foo
<aeth>
that's bad style though
<aeth>
gilberth: and we've gone full circle since then, because a lot of modern programming languages don't have strings, just what CL would call symbols
<Kingsy>
aeth: what modern language doesnt have strings?!?!
<aeth>
Kingsy: I mean, they don't have strings in the CL sense of mutable character arrays, and instead their strings behave like CL symbols (immutable and cheap, shallow equality comparison)
<gilberth>
aeth: That's the ironic part indeed.
<aeth>
a language with immutable strings probably treats "foo" a lot like '|foo|
<Kingsy>
ah I think I see
<Kingsy>
so much to learn in CL world! :) its such an interesting language for sure
<gilberth>
Look at JS, it treats strings as what we would call symbols.
<gilberth>
When you say a.b in JS it is the same a["b"].
<aeth>
immutable strings are not namespaced to packages and they don't have a symbol-plist etc. etc. but symbols are fairly equivalent to immutable strings anyway
<aeth>
(just pretend that we didn't mention symbol-plist at all, it's kind of legacy pre-hashtable stuff)
decweb has quit [Ping timeout: 252 seconds]
<gilberth>
Thus with JS functions are named by strings, not symbols.
tyson2 has joined #commonlisp
bjorkint0sh has quit [Quit: Leaving]
<aeth>
generally, though, CL just tends to prefer to give you options that have slight differences and tradeoffs
<aeth>
alists vs plists vs hash-tables
<aeth>
symbols vs keywords vs strings
<aeth>
defclass vs defstruct
<aeth>
defun vs defmethod
<aeth>
etc. etc.
<aeth>
a bit more of an overhead to learn than many languages, but there is technically a reason behind everything (although some things are purely historical at this point)
<Kingsy>
yeah I have found it quite hard to learn so far. just because of how it reads. but I feel I am getting past that now. putting together simple programs like the one I showed you has been a bit of a milestone. only up from here.
<gilberth>
Programming is also about fashion. What was chic once, may be bad style today and vice versa.
<aeth>
gilberth: e.g. regex are mostly out of style now, as is perl... good thing we never made something like cl-ppcre core
<gilberth>
It would hate it because it's not POSIX.
<Kingsy>
does style really matter? as long as you have a bit of a community and its useful does it matter if there are groups of people that think its no good?
<aeth>
it does sort of fragment an already small community when there are so many ways to write something and people have different stylistic preferences
<Kingsy>
ah I suppose that is true.
<gilberth>
Besides, you need to be careful. Most style rules make sense.
markb1 has joined #commonlisp
dustinm` has joined #commonlisp
<gilberth>
Only if you're experienced and know what you do, you should thing about to derivate from custom style. Just like in real fashion.
<gilberth>
* think about
bjorkintosh has joined #commonlisp
bjorkintosh has joined #commonlisp
bjorkintosh has quit [Changing host]
Lycurgus has quit [Quit: leaving]
tyson2 has quit [Remote host closed the connection]
<anthk_>
I like structured regexen from sam and vis
attila_lendvai has quit [Ping timeout: 264 seconds]