Xach changed the topic of #commonlisp to: Common Lisp, the #1=(programmable . #1#) programming language | Wiki: <https://www.cliki.net> | IRC Logs: <https://irclog.tymoon.eu/libera/%23commonlisp> | Cookbook: <https://lispcookbook.github.io/cl-cookbook>
scymtym has quit [Excess Flood]
john__ has joined #commonlisp
Alfr has quit [Killed (zirconium.libera.chat (Nickname regained by services))]
scymtym has joined #commonlisp
Alfr has joined #commonlisp
gaqwas has quit [Read error: Connection reset by peer]
pranavats has quit [Ping timeout: 256 seconds]
<bollu> How do I create a shortcut to switch between the editor and the listener in lispworks?
<bollu> I found the snippet (editor:bind-key "Tools Listener" #("Control-c" "Control-z"))
<bollu> which doesn't seem to work
rotateq has quit [Quit: ERC (IRC client for Emacs 27.2)]
random-nick has quit [Ping timeout: 240 seconds]
john__ has quit [Remote host closed the connection]
s-liao has joined #commonlisp
jstoddard has quit [Quit: ERC (IRC client for Emacs 27.2)]
epolanski has quit [Quit: Connection closed for inactivity]
biog has quit [Quit: ZZZzzz…]
beach has quit [Ping timeout: 240 seconds]
dec0d3r has joined #commonlisp
gaqwas has joined #commonlisp
Alfr is now known as Guest9480
Guest9480 has quit [Killed (strontium.libera.chat (Nickname regained by services))]
Alfr has joined #commonlisp
rogersm has quit [Read error: Connection reset by peer]
rogersm has joined #commonlisp
dec0d3r has quit [Quit: Leaving]
pjb has quit [Ping timeout: 240 seconds]
s-liao has quit [Quit: Client closed]
monaaraj has joined #commonlisp
s-liao has joined #commonlisp
monaaraj has quit [Ping timeout: 240 seconds]
monaaraj has joined #commonlisp
raeda has quit [Ping timeout: 268 seconds]
Jing has joined #commonlisp
s-liao has quit [Ping timeout: 256 seconds]
raeda has joined #commonlisp
aartaka has joined #commonlisp
jpl01 has quit [Remote host closed the connection]
aartaka has quit [Ping timeout: 256 seconds]
jstoddard has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
remexre has quit [Remote host closed the connection]
remexre has joined #commonlisp
sloanr has quit [Ping timeout: 256 seconds]
Everything has joined #commonlisp
pjb has joined #commonlisp
ec has quit [Quit: ec]
ec has joined #commonlisp
ec has quit [Client Quit]
ec has joined #commonlisp
gaqwas has quit [Ping timeout: 256 seconds]
monaaraj has quit [Ping timeout: 240 seconds]
monaaraj has joined #commonlisp
beach has joined #commonlisp
taiju has quit [Ping timeout: 256 seconds]
<beach> Good morning everyone!
<beach> bollu: An instruction has a list of inputs and a list of outputs. Individual inputs and outputs are not explicitly stored.
taiju has joined #commonlisp
monaaraj has quit [Ping timeout: 240 seconds]
<beach> bollu: Look in instruction.lisp and you will see those slots.
monaaraj has joined #commonlisp
<beach> bollu: Look in .../HIR/fixnum-related-instructions.lisp for an instruction for adding two fixnums.
semz has quit [Ping timeout: 268 seconds]
<Everything> Good morning
gaqwas has joined #commonlisp
semz has joined #commonlisp
aeth has quit [Ping timeout: 240 seconds]
miique has quit [Ping timeout: 256 seconds]
aeth has joined #commonlisp
akoana has joined #commonlisp
gaqwas has quit [Ping timeout: 240 seconds]
ec has quit [Ping timeout: 276 seconds]
Bike has quit [Quit: Lost terminal]
<remexre> does anyone know if there's a reason why usocket uses select() instead of poll() on SBCL?
<remexre> bizarrely, it seems to use poll() on SCL...
miique has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
tyson2 has quit [Remote host closed the connection]
monaaraj has joined #commonlisp
jstoddard has quit [Quit: ERC (IRC client for Emacs 27.1)]
karlosz has joined #commonlisp
s-liao has joined #commonlisp
Jing has quit [Remote host closed the connection]
Jing has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
igemnace has quit [Remote host closed the connection]
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
raeda has quit [Ping timeout: 240 seconds]
aartaka has joined #commonlisp
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 240 seconds]
raeda has joined #commonlisp
raeda_ has joined #commonlisp
raeda has quit [Read error: Connection reset by peer]
jeosol has quit [Ping timeout: 256 seconds]
monaaraj has quit [Ping timeout: 240 seconds]
monaaraj has joined #commonlisp
pve has joined #commonlisp
s-liao has quit [Quit: Client closed]
loke has joined #commonlisp
<bollu> Morning! I'm looking for feedback on my common lisp code: https://gist.github.com/bollu/651e643565c9d099c6a5b6d5a7fc16d5
<beach> bollu: Did you see my answers to your SICL question?
<beach> bollu: To begin with, you have the wrong number of semicolons for top-level comments, and your indentation is wrong.
jealousmonk has quit [Quit: ERC (IRC client for Emacs 27.1)]
<beach> bollu: It looks like you are using lists where it would be better to use standard objects or structure objects.
<beach> bollu: LET has an implicit PROGN so no need for an explicit one.
<beach> bollu: Your naming convention with -> is not conventional.
s-liao has joined #commonlisp
<beach> bollu: The code in your CASE should not be necessary.
<beach> bollu: And names like BB and TY don't help the person reading your code.
<beach> bollu: And comments like ";; then" and ";; else" just add noise.
<beach> bollu: The number of blank lines between top-level forms seems completely arbitrary. Use exactly one blank like, or none in exceptional cases.
<beach> bollu: And you are misleading the person reading your code by having a function named ASSERT-EQ that then uses an equality predicate other than EQ.
karlosz has quit [Quit: karlosz]
<beach> bollu: This code would be much shorter, much nicer, and much safer, if you used standard classes rather than lists.
shka has joined #commonlisp
Lord_Nightmare has quit [Ping timeout: 240 seconds]
<moon-child> bollu: (reduce (lambda (res x) (list res x)) ...) can be expressed simply as (reduce #'list ...)
Lord_Nightmare2 has joined #commonlisp
<moon-child> bollu: GETTER should use EQ, not EQUAL, as it is comparing symbols
<bollu> beach thanks a lot. I'll refactor this stuff using defclass and compare.
Lord_Nightmare2 is now known as Lord_Nightmare
<moon-child> bollu: close parentheses should not go on their own line
<moon-child> in EXPR->EVAL, why use NUMBERP rather than EXPR->IS-CONST?
monaaraj has quit [Ping timeout: 240 seconds]
monaaraj has joined #commonlisp
<bollu> moon-child I should have used expr->is-const, you're right.
Algernon69 has joined #commonlisp
Algernon91 has joined #commonlisp
attila_lendvai has joined #commonlisp
amb007 has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
Algernon69 has quit [Ping timeout: 240 seconds]
<ns12> remexre: What is SCL? Scieneer Common Lisp?
<remexre> ns12: yeah...
<ns12> Is it widely used?
<phoe> not anymore
<phoe> it's effectively dead - scieneer.com disappeared from the 'net
<ns12> beach: "Your naming convention with -> is not conventional" - What is the convention for naming conversion functions?
<beach> Well, these are not really conversion functions. They are accessors. And the best name for an accessor is the thing it returns like NAME for the name of an object, ADDRESS for an address of an object, etc.
<jackdaniel> clx uses a->b, cffi uses a-to-b, the standard just specifies coerce and accessor like (STRING SOME-SYMBOL)
<jackdaniel> s/coerce/COERCE/
<jackdaniel> for conversion of course, as beach pointed out this is not really a conversion but a predicate
<jackdaniel> the predicate name should be i.e EXPRESSION-CONSTANT-P (or in a form of an accessor)
<ns12> Okay. Is it generally okay to use -> for conversion functions? For example, OBJ-A->OBJ-B.
<jackdaniel> it is not unusual to see such function names; in LiSP author argues, that such functions should be named (OBJ-B<-OBJ-A ...) so the returned type is on the left (if I remember correctly)
<semz> No CL standard function uses it to my knowledge, but you see them quite a bit, probably because Scheme uses them.
<jackdaniel> well, standard doesn't have explicit conversion operators, except from the function COERCE
<ns12> jackdaniel: Nowadays, does anyone follow the OBJ-B<-OBJ-A convention?
amb007 has quit [Ping timeout: 240 seconds]
<semz> parse-integer, kind of. Yes, I'm reaching.
<jackdaniel> I wouldn't call it a convention, rather a recommendation. I'm sure someone does, but I don't know about such codebase myself
amb007 has joined #commonlisp
<ns12> What about the use of ! in the names of functions that mutate objects? Do Common Lisp programmers use ! like Scheme programmers do?
<moon-child> conventionally they do not
<jackdaniel> I saw it in a few libaries, but it is not common. a destructive version of FOO is NFOO (that's not the same as mutating, because you call them for the return value)
<ns12> So how is mutation indicated? In the docstring?
<jackdaniel> often it is indicated by a last letter f
<jackdaniel> like (rotatef a b c)
<moon-child> ns12: same way any other behaviour of the function is indicated
<jackdaniel> or (maxf a 1 2 3) mind that the first argument is also taken into account for its value, not only as a storage place
<moon-child> jackdaniel: I associate the letter f with a macro that mutates a place, not with a function
lisp123 has joined #commonlisp
<jackdaniel> sure, it is. I've assumed that we talk about operators
<ns12> What is the meaning of "F"? Does it stand for anything?
<jackdaniel> 'names of functions' may suggest otherwise, but organic macros in scheme are underutilized so that's probably the cause that function comes to mind first
<jackdaniel> MODIFY
<jackdaniel> at leasts that's how I interpret it, I don't know how I came with this association
<moon-child> apparently it's 'function'
<jackdaniel> and, as for functions a usual name would be (setf foo)
<jackdaniel> i.e (setf (name <object>) 'silly!)
lisp123 has quit [Ping timeout: 256 seconds]
lisp123 has joined #commonlisp
mgl has joined #commonlisp
amb007 has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
lisp123 has quit [Ping timeout: 240 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
gaqwas has joined #commonlisp
Oladon has quit [Quit: Leaving.]
Jing has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
lisp123 has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
notzmv has quit [Ping timeout: 268 seconds]
monaaraj has quit [Ping timeout: 256 seconds]
biog has joined #commonlisp
monaaraj has joined #commonlisp
Krystof has joined #commonlisp
nature has joined #commonlisp
rotateq has joined #commonlisp
gaqwas has quit [Ping timeout: 256 seconds]
miique has quit [Ping timeout: 240 seconds]
Posterdati has quit [Ping timeout: 240 seconds]
Posterdati has joined #commonlisp
monaaraj has quit [Ping timeout: 240 seconds]
monaaraj has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
rain3 has joined #commonlisp
biog has quit [Ping timeout: 240 seconds]
dmgk has quit [Quit: ZNC - https://znc.in]
Jing has joined #commonlisp
Spawns has quit [Ping timeout: 240 seconds]
dmgk has joined #commonlisp
Spawns has joined #commonlisp
lisp123 has joined #commonlisp
Mandus has quit [Ping timeout: 256 seconds]
Mandus has joined #commonlisp
lisp123 has quit [Ping timeout: 240 seconds]
Lord_of_Life_ has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 256 seconds]
Lord_of_Life_ is now known as Lord_of_Life
kevingal has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
Algernon91 has quit [Ping timeout: 240 seconds]
Algernon91 has joined #commonlisp
Algernon666 has joined #commonlisp
Algernon91 has quit [Ping timeout: 252 seconds]
Algernon666 has quit [Remote host closed the connection]
Algernon666 has joined #commonlisp
s-liao has quit [Quit: Client closed]
monaaraj has joined #commonlisp
Algernon666 has quit [Remote host closed the connection]
Algernon666 has joined #commonlisp
igemnace has joined #commonlisp
shka has quit [Quit: Konversation terminated!]
igemnace has quit [Ping timeout: 268 seconds]
Krystof has quit [Remote host closed the connection]
Algernon666 has quit [Read error: Network is unreachable]
amb007 has quit [Read error: Connection reset by peer]
random-nick has joined #commonlisp
amb007 has joined #commonlisp
notzmv has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
cranium has joined #commonlisp
monaaraj has joined #commonlisp
varjag has joined #commonlisp
theothornhill has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
igemnace has joined #commonlisp
sander has quit [Quit: So long! :)]
sander has joined #commonlisp
tyson2 has joined #commonlisp
lisp123 has joined #commonlisp
s-liao has joined #commonlisp
theothornhill has quit [Remote host closed the connection]
lisp123 has quit [Ping timeout: 256 seconds]
theothornhill has joined #commonlisp
akoana has quit [Quit: leaving]
waleee has quit [Ping timeout: 250 seconds]
attila_lendvai has quit [Quit: Leaving]
attila_lendvai has joined #commonlisp
lisp123 has joined #commonlisp
abrantesasf has joined #commonlisp
cage has joined #commonlisp
wyrd has joined #commonlisp
s-liao has quit [Quit: Client closed]
Everything has quit [Quit: leaving]
abrantesasf has quit [Read error: Connection reset by peer]
abrantesasf has joined #commonlisp
waleee has joined #commonlisp
Algernon69 has joined #commonlisp
<theothornhill> Hey people! Does this look like a reasonable dsl for making a graphql server? I'd love some input, but here is a complete working graphql server (modulo networking) https://github.com/theothornhill/gql/blob/master/t/starwars/starwars-data.lisp
Algernon91 has joined #commonlisp
Krystof has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
Algernon69 has quit [Ping timeout: 240 seconds]
<jackdaniel> where is the dsl?
<theothornhill> well, it is the macros resembling defclasses. Dsl might be the wrong term
<jackdaniel> you mean defenum, definterface, defobject and defschema?
<jackdaniel> is there a reason for defenum args not be a &body argument (instead of a list)
<jackdaniel> re definterface and defobject, why are they not "normal" defclass arguments?
<jackdaniel> s/arguments/forms/
<jackdaniel> with possibly a different metaclass and slot metaclasses to accept other argument types
<theothornhill> because they need to resolve into parsed objects, so that we both can use the js-like language and define our own
<theothornhill> that's my thinking, at least
thomaslewis has left #commonlisp [#commonlisp]
<jackdaniel> well, these are clearly lisp forms, you may serialize it and deserialize with anything, you don't work on characters but on objects right?
<theothornhill> yeah, I construct an ast, and these macros create ast objects manually
<theothornhill> not quite sure I understand what you mean
<jackdaniel> you've said that you have some specific syntax so objects can resolve into parsed objects, did I get that worng?
<jackdaniel> s/worng/wrong/?
<theothornhill> no, that's correct
<jackdaniel> so, what I'm saying is that it doesn't matter what syntax you use, because serializer and deserializer work on data that is already read
rain3 has quit [Ping timeout: 268 seconds]
<theothornhill> Right
thomaslewis has joined #commonlisp
<rotateq> so many strings :)
thomaslewis has left #commonlisp [#commonlisp]
<theothornhill> <3
<theothornhill> yes, I don't really like that, but it might be better than changing the reader for casing?
<rotateq> yes sure, for the ones that aren't all uppercase
<theothornhill> true
<jackdaniel> if this is about to expand to defclass then these would be slot names
<jackdaniel> so perhaps (id :name "id" :type …)
<jackdaniel> (home-planet :name "homePlanet" …) etc
<theothornhill> They expand into other ast classes, for the time being at least
<random-nick> you can avoid upcasing with ||
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
monaaraj has quit [Ping timeout: 240 seconds]
monaaraj has joined #commonlisp
Bike has joined #commonlisp
Inline has joined #commonlisp
Bike has quit [*.net *.split]
attila_lendvai has quit [*.net *.split]
random-nick has quit [*.net *.split]
Mandus has quit [*.net *.split]
Spawns has quit [*.net *.split]
Posterdati has quit [*.net *.split]
rotateq has quit [*.net *.split]
rogersm has quit [*.net *.split]
scymtym has quit [*.net *.split]
hineios has quit [*.net *.split]
Noisytoot has quit [*.net *.split]
alvaro121 has quit [*.net *.split]
unyu has quit [*.net *.split]
sterni has quit [*.net *.split]
icepic1984[m] has quit [*.net *.split]
loke has quit [*.net *.split]
monaaraj has quit [*.net *.split]
Krystof has quit [*.net *.split]
abrantesasf has quit [*.net *.split]
Lord_of_Life has quit [*.net *.split]
dmgk has quit [*.net *.split]
nature has quit [*.net *.split]
raeda_ has quit [*.net *.split]
aartaka has quit [*.net *.split]
aeth has quit [*.net *.split]
Alfr has quit [*.net *.split]
perrierjouet has quit [*.net *.split]
hhdave has quit [*.net *.split]
X-Scale has quit [*.net *.split]
iamFIREcracker has quit [*.net *.split]
cognemo has quit [*.net *.split]
tsiolkov has quit [*.net *.split]
mrmr has quit [*.net *.split]
Inline has quit [*.net *.split]
ns12 has quit [*.net *.split]
flip214 has quit [*.net *.split]
waleee has quit [*.net *.split]
sander has quit [*.net *.split]
kevingal has quit [*.net *.split]
theothornhill has quit [*.net *.split]
Jing has quit [*.net *.split]
taiju has quit [*.net *.split]
remexre has quit [*.net *.split]
ahlk has quit [*.net *.split]
perro_ has quit [*.net *.split]
Jach has quit [*.net *.split]
robin has quit [*.net *.split]
etimmons has quit [*.net *.split]
cage has quit [*.net *.split]
pve has quit [*.net *.split]
lagash has quit [*.net *.split]
szkl has quit [*.net *.split]
lottaquestions has quit [*.net *.split]
greyrat has quit [*.net *.split]
hexology has quit [*.net *.split]
jgkamat has quit [*.net *.split]
engblom_ has quit [*.net *.split]
SAL9000 has quit [*.net *.split]
dilated_dinosaur has quit [*.net *.split]
kagevf has quit [*.net *.split]
derwolf has quit [*.net *.split]
d4ryus has quit [*.net *.split]
splittist has quit [*.net *.split]
zoglesby has quit [*.net *.split]
stylewarning has quit [*.net *.split]
jcowan has quit [*.net *.split]
yottabyte has quit [*.net *.split]
igemnace has quit [*.net *.split]
cranium has quit [*.net *.split]
notzmv has quit [*.net *.split]
semz has quit [*.net *.split]
beach has quit [*.net *.split]
pjb has quit [*.net *.split]
White_Flame has quit [*.net *.split]
jasom has quit [*.net *.split]
hugo has quit [*.net *.split]
parjanya- has quit [*.net *.split]
terrorjack has quit [*.net *.split]
euandreh has quit [*.net *.split]
ryanbw has quit [*.net *.split]
phadthai has quit [*.net *.split]
BerntH_ has quit [*.net *.split]
luis has quit [*.net *.split]
leo_song has quit [*.net *.split]
hubvu has quit [*.net *.split]
pl has quit [*.net *.split]
ggoes has quit [*.net *.split]
mgxm has quit [*.net *.split]
derelict has quit [*.net *.split]
moon-child has quit [*.net *.split]
|3b| has quit [*.net *.split]
splatt990 has quit [*.net *.split]
joast has quit [*.net *.split]
jsatk has quit [*.net *.split]
Nilby has quit [*.net *.split]
jemoka has quit [*.net *.split]
ogamita has quit [*.net *.split]
Odin- has quit [*.net *.split]
ori has quit [*.net *.split]
TMA has quit [*.net *.split]
jmercouris has quit [*.net *.split]
zagura has quit [*.net *.split]
antoszka has quit [*.net *.split]
spacebat3 has quit [*.net *.split]
hefner has quit [*.net *.split]
micro has quit [*.net *.split]
jdz has quit [*.net *.split]
form_feed has quit [*.net *.split]
mikko has quit [*.net *.split]
BytesAndCoffee has quit [*.net *.split]
ecraven has quit [*.net *.split]
energizer has quit [*.net *.split]
cross has quit [*.net *.split]
gin has quit [*.net *.split]
cpape has quit [*.net *.split]
Algernon91 has quit [*.net *.split]
CodeBitCookie[m] has quit [*.net *.split]
sepanko has quit [*.net *.split]
akater[m] has quit [*.net *.split]
Spawns_Carpet[m] has quit [*.net *.split]
phantomics has quit [*.net *.split]
Xach has quit [*.net *.split]
ultera has quit [*.net *.split]
sirufer has quit [*.net *.split]
etiago has quit [*.net *.split]
Patternmaster has quit [*.net *.split]
resttime has quit [*.net *.split]
varjag has quit [*.net *.split]
tyson2 has quit [*.net *.split]
Lord_Nightmare has quit [*.net *.split]
mister_m has quit [*.net *.split]
cosimone has quit [*.net *.split]
srji has quit [*.net *.split]
xsperry has quit [*.net *.split]
bollu has quit [*.net *.split]
Shinmera has quit [*.net *.split]
utis has quit [*.net *.split]
stack has quit [*.net *.split]
mfiano has quit [*.net *.split]
dstein64 has quit [*.net *.split]
okflo_ has quit [*.net *.split]
snits has quit [*.net *.split]
mzan has quit [*.net *.split]
Demosthenex has quit [*.net *.split]
jm has quit [*.net *.split]
amb007 has quit [*.net *.split]
qhong- has quit [*.net *.split]
specbot has quit [*.net *.split]
minion has quit [*.net *.split]
markasoftware has quit [*.net *.split]
kakuhen has quit [*.net *.split]
saltrocklamp[m] has quit [*.net *.split]
_death has quit [*.net *.split]
Colleen has quit [*.net *.split]
iquites has quit [*.net *.split]
gko has quit [*.net *.split]
ullbeking_ has quit [*.net *.split]
gpiero has quit [*.net *.split]
drmeister has quit [*.net *.split]
zephyr has quit [*.net *.split]
griffinmb has quit [*.net *.split]
skyl4rk has quit [*.net *.split]
jgart has quit [*.net *.split]
hobo has quit [*.net *.split]
linjian has quit [*.net *.split]
zbrown[m] has quit [*.net *.split]
saturn2 has quit [*.net *.split]
spec has quit [*.net *.split]
xaltsc has quit [*.net *.split]
hisacro has quit [*.net *.split]
edgar-rft has quit [*.net *.split]
Kabriel has quit [*.net *.split]
axvr has quit [*.net *.split]
sm2n has quit [*.net *.split]
dbotton has quit [*.net *.split]
payphone has quit [*.net *.split]
contrapunctus has quit [*.net *.split]
easye has quit [*.net *.split]
susam has quit [*.net *.split]
borodust has quit [*.net *.split]
fe[nl]ix has quit [*.net *.split]
froggey has quit [*.net *.split]
zacts has quit [*.net *.split]
bldr has quit [*.net *.split]
nckx has quit [*.net *.split]
rdrg109 has quit [*.net *.split]
opalvaults[m] has quit [*.net *.split]
rgherdt has quit [*.net *.split]
opc0de has quit [*.net *.split]
danieli has quit [*.net *.split]
paul0 has quit [*.net *.split]
sukaeto has quit [*.net *.split]
gendl has quit [*.net *.split]
alanz has quit [*.net *.split]
sgithens has quit [*.net *.split]
pok has quit [*.net *.split]
Schnouki has quit [*.net *.split]
dim has quit [*.net *.split]
IUSR has quit [*.net *.split]
phoe has quit [*.net *.split]
skn has quit [*.net *.split]
ck_ has quit [*.net *.split]
jfb4 has quit [*.net *.split]
dieggsy has quit [*.net *.split]
Duuqnd has quit [*.net *.split]
sp has quit [*.net *.split]
nworb has quit [*.net *.split]
edmrk[m] has quit [*.net *.split]
rudi has quit [*.net *.split]
jaimelm has quit [*.net *.split]
selwyn has quit [*.net *.split]
theBlackDragon has quit [*.net *.split]
anddam has quit [*.net *.split]
samebchase has quit [*.net *.split]
jackdaniel has quit [*.net *.split]
les has quit [*.net *.split]
iisi has quit [*.net *.split]
fiddlerwoaroof has quit [*.net *.split]
Fade has quit [*.net *.split]
krjst has quit [*.net *.split]
madnificent has quit [*.net *.split]
thonkpod has quit [*.net *.split]
Bi[m] has quit [*.net *.split]
Arcsech has quit [*.net *.split]
katco has quit [*.net *.split]
cgenie[m] has quit [*.net *.split]
yitzi has quit [*.net *.split]
pieguy12- has quit [*.net *.split]
psf has quit [*.net *.split]
dcx has quit [*.net *.split]
gabc has quit [*.net *.split]
amk has quit [*.net *.split]
MichaelRaskin has quit [*.net *.split]
xantoz has quit [*.net *.split]
Algernon69 has joined #commonlisp
even4void has quit [*.net *.split]
conjunctive has quit [*.net *.split]
zups has quit [*.net *.split]
lonjil has quit [*.net *.split]
ChanServ has quit [*.net *.split]
mgl has quit [*.net *.split]
wyrd has quit [*.net *.split]
azimut has quit [*.net *.split]
gxt has quit [*.net *.split]
anticomputer has quit [*.net *.split]
MatrixTravelerbo has quit [Max SendQ exceeded]
semz has joined #commonlisp
lagash has joined #commonlisp
hhdave has joined #commonlisp
rdrg109 has joined #commonlisp
nckx has joined #commonlisp
skn has joined #commonlisp
jfb4 has joined #commonlisp
pok has joined #commonlisp
sgithens has joined #commonlisp
IUSR has joined #commonlisp
alanz has joined #commonlisp
opalvaults[m] has joined #commonlisp
gin has joined #commonlisp
energizer has joined #commonlisp
rain3 has joined #commonlisp
sukaeto has joined #commonlisp
paul0 has joined #commonlisp
danieli has joined #commonlisp
opc0de has joined #commonlisp
mikko has joined #commonlisp
jcowan has joined #commonlisp
hefner has joined #commonlisp
zagura has joined #commonlisp
micro has joined #commonlisp
TMA has joined #commonlisp
antoszka has joined #commonlisp
form_feed has joined #commonlisp
jemoka has joined #commonlisp
jsatk has joined #commonlisp
|3b| has joined #commonlisp
mgl has joined #commonlisp
cross has joined #commonlisp
ecraven has joined #commonlisp
cpape has joined #commonlisp
Schnouki has joined #commonlisp
bldr has joined #commonlisp
ck_ has joined #commonlisp
phoe has joined #commonlisp
dim has joined #commonlisp
rgherdt has joined #commonlisp
BytesAndCoffee has joined #commonlisp
gendl has joined #commonlisp
spacebat3 has joined #commonlisp
stylewarning has joined #commonlisp
jdz has joined #commonlisp
ori has joined #commonlisp
jmercouris has joined #commonlisp
ogamita has joined #commonlisp
Odin- has joined #commonlisp
d4ryus has joined #commonlisp
Nilby has joined #commonlisp
kagevf has joined #commonlisp
splittist has joined #commonlisp
ggoes has joined #commonlisp
derelict has joined #commonlisp
hubvu has joined #commonlisp
zoglesby has joined #commonlisp
leo_song has joined #commonlisp
dilated_dinosaur has joined #commonlisp
yottabyte has joined #commonlisp
derwolf has joined #commonlisp
SAL9000 has joined #commonlisp
splatt990 has joined #commonlisp
mgxm has joined #commonlisp
luis has joined #commonlisp
pl has joined #commonlisp
parjanya- has joined #commonlisp
joast has joined #commonlisp
ryanbw has joined #commonlisp
BerntH_ has joined #commonlisp
robin has joined #commonlisp
tsiolkov has joined #commonlisp
mrmr has joined #commonlisp
cognemo has joined #commonlisp
ahlk has joined #commonlisp
flip214 has joined #commonlisp
jgkamat has joined #commonlisp
jasom has joined #commonlisp
perrierjouet has joined #commonlisp
moon-child has joined #commonlisp
hugo has joined #commonlisp
Alfr has joined #commonlisp
engblom_ has joined #commonlisp
hexology has joined #commonlisp
greyrat has joined #commonlisp
phadthai has joined #commonlisp
notzmv has joined #commonlisp
Lord_of_Life has joined #commonlisp
loke has joined #commonlisp
Jing has joined #commonlisp
igemnace has joined #commonlisp
theothornhill has joined #commonlisp
raeda_ has joined #commonlisp
abrantesasf has joined #commonlisp
Krystof has joined #commonlisp
Inline has joined #commonlisp
aartaka has joined #commonlisp
scymtym has joined #commonlisp
random-nick has joined #commonlisp
rotateq has joined #commonlisp
Spawns has joined #commonlisp
alvaro121 has joined #commonlisp
icepic1984[m] has joined #commonlisp
aeth has joined #commonlisp
Posterdati has joined #commonlisp
hineios has joined #commonlisp
Mandus has joined #commonlisp
rogersm has joined #commonlisp
kevingal has joined #commonlisp
monaaraj has joined #commonlisp
cranium has joined #commonlisp
sander has joined #commonlisp
cage has joined #commonlisp
waleee has joined #commonlisp
unyu has joined #commonlisp
sterni has joined #commonlisp
dmgk has joined #commonlisp
nature has joined #commonlisp
pve has joined #commonlisp
ChanServ has joined #commonlisp
Bike has joined #commonlisp
perro_ has joined #commonlisp
szkl has joined #commonlisp
White_Flame has joined #commonlisp
Jach has joined #commonlisp
euandreh has joined #commonlisp
beach has joined #commonlisp
pjb has joined #commonlisp
lottaquestions has joined #commonlisp
terrorjack has joined #commonlisp
X-Scale has joined #commonlisp
remexre has joined #commonlisp
etimmons has joined #commonlisp
ns12 has joined #commonlisp
taiju has joined #commonlisp
iamFIREcracker has joined #commonlisp
nworb has joined #commonlisp
Duuqnd has joined #commonlisp
dieggsy has joined #commonlisp
rudi has joined #commonlisp
sp has joined #commonlisp
edmrk[m] has joined #commonlisp
anddam has joined #commonlisp
theBlackDragon has joined #commonlisp
samebchase has joined #commonlisp
jaimelm has joined #commonlisp
jackdaniel has joined #commonlisp
selwyn has joined #commonlisp
iisi has joined #commonlisp
les has joined #commonlisp
fiddlerwoaroof has joined #commonlisp
krjst has joined #commonlisp
Fade has joined #commonlisp
thonkpod has joined #commonlisp
madnificent has joined #commonlisp
linjian has joined #commonlisp
hobo has joined #commonlisp
fe[nl]ix has joined #commonlisp
jgart has joined #commonlisp
dbotton has joined #commonlisp
hisacro has joined #commonlisp
edgar-rft has joined #commonlisp
contrapunctus has joined #commonlisp
zbrown[m] has joined #commonlisp
easye has joined #commonlisp
xaltsc has joined #commonlisp
Kabriel has joined #commonlisp
saturn2 has joined #commonlisp
axvr has joined #commonlisp
sm2n has joined #commonlisp
zacts has joined #commonlisp
susam has joined #commonlisp
borodust has joined #commonlisp
froggey has joined #commonlisp
payphone has joined #commonlisp
spec has joined #commonlisp
CodeBitCookie[m] has joined #commonlisp
sepanko has joined #commonlisp
phantomics has joined #commonlisp
akater[m] has joined #commonlisp
etiago has joined #commonlisp
resttime has joined #commonlisp
Patternmaster has joined #commonlisp
Xach has joined #commonlisp
ultera has joined #commonlisp
sirufer has joined #commonlisp
Spawns_Carpet[m] has joined #commonlisp
shinohai[m] has quit [Ping timeout: 240 seconds]
luis` has quit [Ping timeout: 240 seconds]
icepic1984[m] has quit [Ping timeout: 240 seconds]
azimut has joined #commonlisp
gxt has joined #commonlisp
anticomputer has joined #commonlisp
wyrd has joined #commonlisp
opalvaults[m] has quit [Ping timeout: 250 seconds]
_death has joined #commonlisp
kakuhen has joined #commonlisp
saltrocklamp[m] has joined #commonlisp
zephyr has joined #commonlisp
skyl4rk has joined #commonlisp
Colleen has joined #commonlisp
gko has joined #commonlisp
gpiero has joined #commonlisp
griffinmb has joined #commonlisp
iquites has joined #commonlisp
drmeister has joined #commonlisp
ullbeking_ has joined #commonlisp
saltrocklamp[m] has quit [Max SendQ exceeded]
kakuhen has quit [Ping timeout: 245 seconds]
Mrtn[m] has quit [Ping timeout: 240 seconds]
cgenie[m] has joined #commonlisp
Bi[m] has joined #commonlisp
katco has joined #commonlisp
Arcsech has joined #commonlisp
yitzi has joined #commonlisp
gabc has joined #commonlisp
amk has joined #commonlisp
even4void has joined #commonlisp
xantoz has joined #commonlisp
conjunctive has joined #commonlisp
MichaelRaskin has joined #commonlisp
pieguy12- has joined #commonlisp
lonjil has joined #commonlisp
dcx has joined #commonlisp
zups has joined #commonlisp
psf has joined #commonlisp
Bi[m] has quit [Ping timeout: 260 seconds]
Arcsech has quit [Ping timeout: 260 seconds]
katco has quit [Ping timeout: 260 seconds]
yitzi has quit [Ping timeout: 260 seconds]
jm has joined #commonlisp
amb007 has joined #commonlisp
varjag has joined #commonlisp
Lord_Nightmare has joined #commonlisp
bollu has joined #commonlisp
mister_m has joined #commonlisp
xsperry has joined #commonlisp
cosimone has joined #commonlisp
srji has joined #commonlisp
Shinmera has joined #commonlisp
utis has joined #commonlisp
snits has joined #commonlisp
mfiano has joined #commonlisp
stack has joined #commonlisp
dstein64 has joined #commonlisp
Demosthenex has joined #commonlisp
mzan has joined #commonlisp
qhong- has joined #commonlisp
specbot has joined #commonlisp
minion has joined #commonlisp
tyson2 has joined #commonlisp
markasoftware has joined #commonlisp
nworb has quit [Ping timeout: 268 seconds]
dieggsy has quit [Ping timeout: 268 seconds]
amb007 has quit [Ping timeout: 272 seconds]
linjian has quit [Ping timeout: 250 seconds]
zbrown[m] has quit [Ping timeout: 250 seconds]
Noisytoot has joined #commonlisp
Gnuxie has quit [Ping timeout: 240 seconds]
loke[m] has quit [Ping timeout: 240 seconds]
Spawns_Carpet[m] has quit [Ping timeout: 252 seconds]
CodeBitCookie[m] has quit [Ping timeout: 252 seconds]
sepanko has quit [Ping timeout: 252 seconds]
akater[m] has quit [Ping timeout: 252 seconds]
Duuqnd has quit [Ping timeout: 268 seconds]
edmrk[m] has quit [Ping timeout: 268 seconds]
sp has quit [Ping timeout: 268 seconds]
rudi has quit [Ping timeout: 268 seconds]
cgenie[m] has quit [Ping timeout: 260 seconds]
okflo has joined #commonlisp
amb007 has joined #commonlisp
Algernon69 has quit [Ping timeout: 240 seconds]
yitzi has joined #commonlisp
Arcsech has joined #commonlisp
icepic1984[m] has joined #commonlisp
shinohai[m] has joined #commonlisp
ec has joined #commonlisp
Algernon91 has joined #commonlisp
jeosol has joined #commonlisp
wyrd has quit [Quit: leaving]
jeosol has left #commonlisp [#commonlisp]
jeosol has joined #commonlisp
monaaraj has quit [Ping timeout: 256 seconds]
remexre has quit [Ping timeout: 240 seconds]
eddof13 has joined #commonlisp
linjian has joined #commonlisp
zbrown[m] has joined #commonlisp
jeosol has quit [Changing host]
jeosol has joined #commonlisp
Duuqnd has joined #commonlisp
Bi[m] has joined #commonlisp
dieggsy has joined #commonlisp
nworb has joined #commonlisp
wyrd has joined #commonlisp
remexre has joined #commonlisp
<sm2n> theothornhill: Are you only allowed one server per lisp image?
sp has joined #commonlisp
<Alfr> sm2n, why?
jealousmonk has joined #commonlisp
ec has quit [Quit: ec]
<sm2n> Well in the code it appears the gql schema is global. I wonder if that was intentional.
rudi has joined #commonlisp
<sm2n> I personally think it'd probably be desirable and useful to delimit schemata somehow
remexre has quit [Ping timeout: 240 seconds]
remexre has joined #commonlisp
<Alfr> sm2n, that sounds more like a design limitation of your software in question, it's not inherent to CL.
<sm2n> Yes, I was talking about the code theothornhill posted earlier
<Alfr> sm2n, then never mind me. ;)
MatrixTravelerbo has joined #commonlisp
cgenie[m] has joined #commonlisp
ec has joined #commonlisp
OlCe has joined #commonlisp
Mrtn[m] has joined #commonlisp
opalvaults[m] has joined #commonlisp
taiju has quit [Ping timeout: 240 seconds]
taiju has joined #commonlisp
saltrocklamp[m] has joined #commonlisp
Gnuxie has joined #commonlisp
loke[m] has joined #commonlisp
Spawns_Carpet[m] has joined #commonlisp
sepanko has joined #commonlisp
CodeBitCookie[m] has joined #commonlisp
edmrk[m] has joined #commonlisp
Inline has quit [Remote host closed the connection]
akater[m] has joined #commonlisp
lisp123 has joined #commonlisp
Jing has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
cranium has quit [Quit: Leaving]
lisp123 has quit [Ping timeout: 256 seconds]
luis` has joined #commonlisp
mgl has quit [Ping timeout: 256 seconds]
cosimone has quit [Read error: Connection reset by peer]
monaaraj has joined #commonlisp
<theothornhill> sm2n: That's just for now until I decide how to proceed. I know of it :)
Algernon666 has joined #commonlisp
Algernon91 has quit [Ping timeout: 240 seconds]
kakuhen has joined #commonlisp
karlosz has joined #commonlisp
<bollu> What all can :initarg be in a defclass? I accidentally discovered it can be either a plain name or a symbol: https://gist.github.com/bollu/b0b25e3d33a7c10cec72e1ed7bb071af
<bollu> I tried strings, doesn't work
katco has joined #commonlisp
<jackdaniel> both :bar-initarg and foo-initarg are symbols
<jackdaniel> the initarg must be a symbol
<jackdaniel> (not not necessarily a keyword)
<bollu> Hmm, then I don't understand what a symbol is. I thought a :symbol was some kind of flyweight object that's efficiently allocated, while 'symbol is .. something else (I'm not sure what)
<jackdaniel> :foo is a symbol in the package keyword, these symbols are kind of special, because they evaluate to themselves
<jackdaniel> foo:xxx is a symbol XXX in a package "FOO"
<jackdaniel> :xxx is a symbol named XXX in a package "KEYWORD"
<bollu> mm
<bollu> I feel there is some inconsistency still. In the declaration of foo, I use [foo-field :initarg foo-initarg] while for bar, I use [bar-field :initarg :bar-initarg]. The [foo-initarg] is not a symbol. Why is this accepted?
lisp123 has joined #commonlisp
<bollu> I'm not doubting your explanation, merely trying to understand if I'm missing something still.
<beach> foo-initarg is a symbol.
<bollu> Oh, I'm not reading right
<bollu> I see
<bollu> I thought 'foo-initarg was a symbol, with the quote.
<jackdaniel> quote prevents evaluation
<bollu> what is a symbol, then? is every identifier a symbol?
<bollu> (and things of the form :<identifier> ? )
cosimone has joined #commonlisp
<Alfr> bollu, result of (make-symbol "some-name").
<beach> clhs 2.3.4
<beach> bollu: ^
<phoe> a symbol is one of primitive lisp datatypes
<phoe> simplifying, a symbol is a string given identity (and optionally a package)
jstoddard has joined #commonlisp
<phoe> (although most of symbols you'll meet in lisp have packages)
amb007 has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
<beach> Also be careful by what you mean by "is".
<phoe> CL has no concept of "identifier"
<jackdaniel> it has
<phoe> !
* phoe stands corrected
cosimone has quit [Remote host closed the connection]
<jackdaniel> stand that way for 15m on tips of your toes
<jackdaniel> :)
<phoe> now that's a challenge
<bollu> Nice, thank you!
<bollu> CL-USER 30 > (make-symbol "foo") #:|foo| I have not seen #:|...| anywhere else. should I have encountered it in the wild before?
<Xach> bollu: maybe
<jackdaniel> #:|foo| is composed of two reader macros
<jackdaniel> #:xxx means a symbol without package
<jackdaniel> |xxx| means a symbol with a name "xxx" (as opposed to i.e "XXX")
<jackdaniel> so #:|foo| means uninterned (without package) symbol with a name "xxx"
<random-nick> | isn't a reader macro
cosimone has joined #commonlisp
<random-nick> it's defined as a "multiple escape character"
<jackdaniel> OK, me top tops on his toes
<jackdaniel> s/top/tip/
<bollu> :)
<bollu> okay, neat, thanks! I go back to fixing my shoddy lisp as per beach's feedback
<beach> bollu: Also, really, I am serious by being careful with what you mean by "is".
<beach> bollu: When the reader sees the sequence of characters 'hello, it does not return a symbol.
<beach> bollu: It returns a list of two symbols: (QUOTE HELLO)
<beach> bollu: So a more accurate statement than "is", would be "in a context of evaluation, the form 'hello evaluates to the symbol named HELLO".
<bollu> beach the rephrasing is very helpful.
<beach> bollu: The rest depends on the evaluation rules and some other things. Like when the reader sees :hello, it returns the symbol named HELLO in the keyword package. But as it turns out, when the evaluator sees a symbol in the keyword package, it returns the same symbol as a value. That is not the case with other symbols.
<phoe> ;; ...with *most* other symbols - some of them are defined to evaluate to themselves, most notably the constants T and NIL
<beach> Right.
<jackdaniel> (defvar phoe 'phoe)
<phoe> ;; but keywords are the group of symbols for which this behavior is required - all it takes is interning a symbol in the KEYWORD package for that symbol to gain the magical properties of a keyword
<phoe> also what jackdaniel just said
karlosz has quit [Quit: karlosz]
<beach> bollu: So this is why, again in the context of evaluation, a symbol such as HELLO by itself evaluates to the value of HELLO as a variable, whereas a symbol such as :HELLO evaluates to itself.
<jackdaniel> btw lately I find myself more often writing (function foo) in macro definitions (as contrated to function bodies) than #'foo
<jackdaniel> it makes all that quoting and unquoting much less cryptic
<jackdaniel> and (quote foo)
<bollu> jackdaniel that's very neat.
<bollu> jackdaniel (the defvar)
tyson2 has quit [Remote host closed the connection]
amb007 has quit [Ping timeout: 256 seconds]
<jackdaniel> I like being complimented, keep going! ;)
* jackdaniel leaves the office, see you \o
<bollu> see ya!
amb007 has joined #commonlisp
<bollu> beach A stylistic question. If you recall the code review you did for me ~12h ago, I had functions like expr->eval. You mentioned this was bad form. What would you name such a function?
<bollu> I am considering expr-eval
<bollu> but I am not sure
<beach> I need to do that tomorrow. My (admittedly small) family just announced that dinner is served. Sorry.
wheelsucker has joined #commonlisp
<bollu> beach enjoy!
Oladon has joined #commonlisp
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<jackdaniel> what does this function do?
<jackdaniel> evaluate-expression would be a good name if it evaluates the expression
<etimmons> Xach: Is Planet Lisp broken or is it just my feed? Some posts from yesterday aren't showing up.
<Xach> etimmons: could be both!
<lisp123> Last post 36 hours ago here
<lisp123> Xach: Who owns lisp.org?
<lisp123> What a domain...
<lisp123> *drools*
<bollu> jackdaniel it evaluates expressions, yes
<Xach> lisp123: franz
<yottabyte> in emacs, how do I load the entire file? so that every function and what not is available in slime
<Xach> etimmons: i get 404 for the feed. did it move and i didn't know about it?
<Xach> yottabyte: slime-load-file is one way
<lisp123> Xach: Thanks. That's very nice of them for the home page.
<etimmons> what address do you have?
<Xach> it is possible you informed me and i failed to act. i am using https://www.timmons.dev/feed/common-lisp-rss.xml
<bollu> Another question. Once I `(defclass expr () ())`, can I somehow get `number` and `symbol` to inherit from `defclass`?
<yottabyte> oh, C-C C-L worked
<bollu> Because I want `expr-eval` to evaluate numbers and symbols, as well as my own expression node types
<phoe> what do you mean, "inherit from defclass"
<bollu> [or is this an anti-pattern, and I should create custom expression types `expr-num` and `expr-sym`?]
<phoe> you mean from EXPR?
<bollu> yes, from EXPR
frgo has joined #commonlisp
<phoe> (defclass my-eval:number (my-eval:expr) ())
<phoe> note that I package-prefixed your symbols because NUMBER and SYMBOL are predefined in the CL package
<phoe> you'll want to define a package MY-EVAL (or some other name) and shadow symbols like NUMBER and SYMBOL
<bollu> hmm
<semz> If expr-eval is a generic function, you can define a method specialized to number or string. The CL classes number and symbol can't be made subclasses of your own classes, although you could make your own classes with that name.
<semz> the latter is basically what phoe said
<bollu> semz is it considered good practice to specialize a generic function to primitive types like number / symbol / string? (expr-eval is indeed a generic function)
<Xach> etimmons: thanks, that works
<phoe> yes, what semz said - depends on whether you'd like to reuse CL types
<phoe> bollu: yes
<phoe> s/types/classes/
<bollu> right, sorry :)
<semz> Definitely common.
<bollu> I come from static typing land, mostly
<bollu> nice, okay! thanks
ns12 has quit [Quit: bye]
ec has quit [Quit: ec]
ns12 has joined #commonlisp
ec has joined #commonlisp
<etimmons> Xach: awesome, thanks!
<lisp123> Can see the new post now
<lisp123> etimmons: congrats on the release
<Xach> etimmons: thanks for letting me know (possibly more than once) the correct link
<etimmons> lisp123: Thank you!
Inline has joined #commonlisp
<etimmons> Xach: No worries. I think there was just a transcription error on one side or the other when I changed it. Or, more accurately, decided that I may blog about more than common-lisp some day
eddof13 has joined #commonlisp
jealousm` has joined #commonlisp
jealousmonk has quit [Ping timeout: 240 seconds]
jealousm` is now known as jealousmonk
<etimmons> Xach: Also, if I were interested in making the new repos Twitter bot look at Gitlab as well what repo should I look at?
sloanr has joined #commonlisp
sloanr has quit [Remote host closed the connection]
eddof13 has quit [Ping timeout: 240 seconds]
<bollu> how do I compare classes for structural equality?
<Xach> bollu: there is nothing built-in to do that.
<bollu> Xach what are my options?
<etimmons> Any Sly users know if there's a way to get an _inferior-lisp_ buffer like SLIME's? Sometimes I have messages printed before the mREPL starts that I want to see
<bollu> Xach I'm trying to write an algorithm that needs persistence, so being able to write immutable style code and check structural equality would be very very useful
<drakonis> etimmons: i skimmed your post about roswell and it reminds me a bit of how guix and nix operates
<Xach> bollu: i'd look at joe marshall's posts about changesafe
<etimmons> nvm, I found the inferior lisp buffer. For some reason wasn't showing up in my buffer list with C-x b 🤔
<Xach> bollu: and kent pitman's "equal rights" article (i think that's the one)
<Xach> bollu: that's part of it. he blogged more details sometime in the past 10 years
<bollu> Xach does it offer a solution? or perspective? ;)
<Xach> bollu: perspective
<bollu> Xach I am unsure that is what I need, if I need to implement algorithms that *need* persistence
<bollu> but I shall read them nonetheless
<bollu> thanks!
<drakonis> minus taking over execution
<Xach> etimmons: oh, that's probably a better starting project
<Xach> let me see if there are uncommitted bits
<etimmons> drakonis: I should try guix and nix someday.
<drakonis> they're pretty decent, but both have their share of oddities
<bollu> I think I will move to defstruct over defclass
<bollu> for my use-case
<lisp123> bollu: stick with defclass
<bollu> lisp123 :(
<drakonis> i should try to reimplement either in cl as soon as i'm capable of
<lisp123> :)
<bollu> lisp123 I'll need to write equality compares by hand
<lisp123> hmm
<drakonis> guix is very good though
<lisp123> i'll send you something
<lisp123> there should be a class equal function in there
<drakonis> it improves on nix in a myriad of ways but retains some design decisions due to reusing the nix daemon
<lisp123> Note this requires you load the CLOSER-MOP package from quicklisp
<lisp123> Take the relevant bits from the file (e.g. the last line will not work)
xaltsc has quit [Read error: Connection reset by peer]
<Xach> etimmons: there *are* some uncommitted changes to ghprojects
<jstoddard> drakonis: If you implement guix in CL, I'll gladly try it out. I have been interested in trying out guix, but haven't gotten around to it.
<Xach> etimmons: I'll see about pushing them later today
<etimmons> drakonis: I bet I'd actually like it. IIUC, once you enter a guix environment it's basically like a fresh OS where everything is available with the standard names and so on. And I realized by biggest complaint about Roswell was it didn't do that
<drakonis> i would like to reimplement shepherd in cl as well
<etimmons> Xach: No rush, I don't have any time budgeted for it soon. Just going to idly look and think for a while
<Xach> etimmons: have you seen djb's remarks about packagers?
<etimmons> I don't think so
<drakonis> then actually get rid of the dependency on the nix daemon so i can use the daemon for deployment, build scheduling and monitoring
<drakonis> It is a big project
thomaslewis has joined #commonlisp
<Xach> headers say last modified 2001
<drakonis> 2001? that's pretty much about the unixen
<drakonis> not linux distros being mutually incompatible
<etimmons> Xach: The first two examples (apache) brought some bad flashbacks to when I first realized that not every distribution put files in the same place
<Xach> i'm glad he won and everything is consistent now
thomaslewis has left #commonlisp [#commonlisp]
<etimmons> ha
miique has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
<drakonis> ha indeed
amb007 has joined #commonlisp
<drakonis> cl-tar is highly appreciated.
<drakonis> i certainly wonder something now, if i have a sufficient amount of external libraries, how prone am i to breakage?
<drakonis> especially libraries that aren't 1.0?
<etimmons> drakonis: Somewhat. I think most CL projects do a good job about not breaking things, but breakage does happen occasionally.
Algernon666 has quit [Read error: Connection reset by peer]
<drakonis> jstoddard: it is worthwhile to try it out, if i actually finished the prototype, it'll look a lot like guix
<etimmons> Frequent CI runs help (not just when you push, but also periodic to get updates from your deps)
<drakonis> before actually engaging into a total makeover
<etimmons> And if you add your project to QL, Xach will let you know if your project fails to build due to a dep change. But I don't think he runs tests, just compiles
<drakonis> tbf, guix and nix have CIs for their package ecosystem
<drakonis> so that gets avoided
<drakonis> lots of package pinning is done to avoid breakage due to upstream updating
<drakonis> it is fascinating
<etimmons> And there are other approaches as well, like CLPM and Qlot that let you create pinned environments.
<etimmons> But if you go that route, you definitely want to have your CI occasionally bump your deps so you don't get too far behind
<drakonis> yeah.
<drakonis> that's the same approach
<etimmons> (shameless-self plug): I do have Gitlab CI scripts for CLPM that will automatically bump your deps and open an MR. That then triggers your regular CI tests so you can see if there was breakage
<drakonis> i do want an escape hatch for ignoring pinning
<drakonis> since guix does not provide it the easy way
<drakonis> nix has it hidden under layers of indirection and code
<drakonis> brb
<etimmons> drakonis: That's pretty easy to do. pining is typically done with a separate file and requires no modification to an .asd file. So just ignore the extra file and load the system however you want to
<etimmons> * pinning
igemnace has quit [Ping timeout: 268 seconds]
<etimmons> As a concrete example, I use CLPM to manage my dev and testing env for cl-tar. But it'll still work via QL (once the next dist hits) or just dropping it onto your ASDF source registry.
<drakonis> not going to make it cl specific tho, as it would defeat the point of the rewrite
<drakonis> also brb soon
Alfr has quit [Remote host closed the connection]
Lord_of_Life has quit [Excess Flood]
Inline__ has joined #commonlisp
Inline has quit [Remote host closed the connection]
Alfr has joined #commonlisp
<etimmons> Ah, I missed the part about reimplementing shepherd
<etimmons> I was still firmly in CL land :)
amb007 has quit [Read error: Connection reset by peer]
Lord_of_Life has joined #commonlisp
<lisp123> Quick one, is there a version of loop that collects for a vector not a list?
<etimmons> (and trying to convince myself I'm not one of those integrators that introduces incompatibilities to lock users in :P)
<aeth> lisp123: no, but depending on what you're doing, you can use MAP or MAP-INTO instead
<aeth> (i.e. if you can write the iteration as a lambda)
<lisp123> aeth: thanks, i'll use MAP and maybe write a mapcar equiv for vector
tyson2 has joined #commonlisp
amb007 has joined #commonlisp
<lisp123> "MAPV"
<aeth> that's basically what MAP is when the second argument isn't NIL or 'list afaik
<aeth> it's just that there are a lot of different kinds of vectors
<aeth> maybe MAPSV if you're going for a 'simple-vector
<lisp123> good point re different kinds of vectors
<lisp123> I guess that's why MAP requires the sequence type to be specified
<lisp123> ehh maybe I just use lists again lol
<rotateq> lol lisp123 :D
<lisp123> too much work with vectors sometime
<lisp123> rotateq: :D
<rotateq> we had this discussion in the past, i remember :P
<lisp123> did we? wouldn't be suprised, I keep going in circles O
<rotateq> yes i mean vectors vs lists
<mfiano> #1=(cons 'I (cons 'keep (cons 'going (cons 'in #1#))))
ec has quit [Ping timeout: 276 seconds]
jeosol has quit [Quit: Client closed]
<drakonis> etimmons: no worries
<etimmons> Hmm. I just discovered that Sly ripped out slime-sprof. That's unfortunate.
rain3 has quit [Ping timeout: 240 seconds]
<drakonis> anyways, it's a lot of wants and not enough haves yet
<drakonis> the first step is the most important one
<drakonis> shepherd's rewrite will still be in cl though
<drakonis> another want is multiplatform
jeosol has joined #commonlisp
<drakonis> but then, i can't guarantee that, because linux is my main platform
<etimmons> Yeah, multiplatform is hard
<drakonis> all i can hope for, is someone stepping up to work on it
<drakonis> since I don't have a mac and windows is probably a rough ride
<drakonis> the bsd family otoh
<drakonis> i don't know if they'd care enough
<drakonis> i know there's two users here
lisp123 has quit [Remote host closed the connection]
<drakonis> freebsd users, that is
lisp123 has joined #commonlisp
attila_lendvai has joined #commonlisp
lisp123 has quit [Ping timeout: 256 seconds]
aartaka has quit [Ping timeout: 256 seconds]
aeth_ has joined #commonlisp
kevingal has quit [Remote host closed the connection]
aeth has quit [Killed (NickServ (GHOST command used by aeth_))]
aeth_ is now known as aeth
cage has quit [Quit: rcirc on GNU Emacs 27.1]
monaaraj has quit [Ping timeout: 256 seconds]
monaaraj has joined #commonlisp
<bollu> can I iterate on the slots of an object?
<bollu> or, well, enumerate all the slots an object's class has?
<jackdaniel> etimmons: nice post re roswell, I share the sentiment :)
thomaslewis has joined #commonlisp
thomaslewis has left #commonlisp [#commonlisp]
<pjb> bollu: you can, using the MOP.
monaaraj has quit [Ping timeout: 256 seconds]
<etimmons> jackdaniel: Thanks!
monaaraj has joined #commonlisp
attila_lendvai has quit [Ping timeout: 256 seconds]
abrantesasf has quit [Remote host closed the connection]
varjag has quit [Quit: ERC (IRC client for Emacs 28.0.50)]
monaaraj has quit [Ping timeout: 256 seconds]
<phoe> aeth: you had this MOP implementation of a class with type checks at runtime, could you link me to it?
<phoe> I promise I'll remember it this time
monaaraj has joined #commonlisp
Inline__ has quit [Ping timeout: 240 seconds]
<bollu> can I compare class-of using equal?
<bollu> pjb thank you!
<phoe> bollu: EQ, even
<phoe> so EQUAL will also work
gaqwas has joined #commonlisp
miique has quit [Ping timeout: 240 seconds]
<bollu> Hmm, I am confused. I don't understand how to use a `standard-effective-slot-definition` to actually read a slot out of an object
<bollu> and can't seem to find the correct function
<Bike> mop slot-value-using-class
<Bike> that one
<bollu> I see. That's counter-intuitive to me. Why do I need to supply the class as well? [I suspect the answer will be 'it's complicated...'?]
<bollu> thank you
<phoe> bollu: because you are not calling slot-value, but slot-value-using-class
<Bike> so that you can specialize methods on the class of the class, rather than the class of the slot definition
<phoe> and the class is there in order to figure out which method to call
<bollu> phoe wouldn't the object know which class to use for a given slot?
<phoe> it does
<phoe> that's why slot-value automatically finds the class object
<phoe> ...not the class object, sorry
<Bike> slot-value-using-class is less intended as an interface for programmers to call themselves, and more as one programmers can customize when they're customizing how the object system works.
* phoe apologizes, too late for him to explain mop at the moment
<Bike> another possibly simpler way to do it would be to get the slot name from the slot definition, and then just use slot-value
<bollu> I prefer slot-value-using-class, I think
<Bike> Ok
<bollu> It appears I need to know how to load package `clos` (at least, that's what I gather from the Lispworks page: http://www.lispworks.com/documentation/lw51/LWRM/html/lwref-16.htm)
<Bike> the MOP is not part of the standard, but is rather an extension (implemented by basically every implementation)
<Bike> you can use the closer-mop library to paper over this
<rotateq> ah bollu, what brought you to using lispworks in the first place? :)
<bollu> rotateq I find the UI more predictable than emacs :)
<rotateq> ok
<Bike> if you're using lispworks exclusively, you probably don't need to bother with closer-mop or loading or anything
<Bike> i imagine the clos package is already exposed for you
<bollu> Bike do you know how I would load clos directly within lispworks? I tried (require "clos"), but it doesn't look like that's it. (require "clos") Error: Unknown module "clos".
<Bike> what does (find-package "CLOS") give you
<bollu> #<The CLOS package, 1324/2048 internal, 197/256 external>
<Bike> okay, so you don't need to load anything. it's there already.
<Bike> have at it
nature has quit [Ping timeout: 256 seconds]
<bollu> That's the strange part: Error: Undefined operator SLOT-VALUE-USING-CLASS in form (SLOT-VALUE-USING-CLASS 1 2).
<phoe> (clos:slot-value-using-class ...)?
<Bike> did you actually qualify it?
<bollu> no, I didn't qualify it
<bollu> sorry, didn't know I had to!
<bollu> let me try that :)
<Bike> no need to apologize
<Bike> in lisp, "package" means a namespace, rather than a unit of code you load together (like a "software package")
miique has joined #commonlisp
<bollu> I see
<bollu> is there an equivalent of `using namespace` in common lisp?
<bollu> or `from package import *`
<phoe> :import-from for single symbols, :use for whole packages
<phoe> but :use is dangerous and :local-nicknames is the equivalent of "import foobarbaz as f"
jm is now known as jmorrison_
<phoe> after which you can refer to foobarbaz:quux as f:quux
<bollu> okay
<bollu> neat, thanks!
<phoe> use them in your package definitions, like
<phoe> (defpackage #:foo (#:use cl) (#:local-nicknames (#:c #:clos))) (in-package #:foo)
<phoe> LW 8.0 should have local nicknames already
bollu has left #commonlisp [The Lounge - https://thelounge.chat]
bollu has joined #commonlisp
<bollu> Bike it appears that clos:slot-value-using-class needs the slot *name*, and not the slot itself. I guess I get the slot name with CLOS:SLOT-DEFINITION-NAME?
<phoe> huh?
<Bike> that appears to be a peculiarity of lispworks, indeed. yes, that's the function you want.
<bollu> thanks!
<Bike> more reason to use slot-value, i guess
rgherdt has quit [Ping timeout: 250 seconds]
<phoe> ...or to use c2mop
<Alfr> phoe, is (#:use ..) as an defpackage option defined?
<phoe> oop
<phoe> s/(#:use cl)/(:use #:cl)/
<phoe> same for #:local-nicknames
<phoe> time to go to sleep
* phoe sleep
perrierjouet has quit [Remote host closed the connection]
<bollu> how does one define a "default" method for a generic? Does a defmethod with no type annotations do the trick?
<phoe> yes
<phoe> s/type annotations/specializers/
<rotateq> phoe: sleeeeep :D
<phoe> (defgeneric foo (bar baz)) (defmethod foo (bar baz) ...)
<phoe> oh okay
* phoe sleep for real this time
<White_Flame> is equivalent to ((bar t) (baz t))
perrierjouet has joined #commonlisp
<bollu> White_Flame neat tidbit
<rotateq> hehe, we'll need you fit :)
<rotateq> bollu: when you explicitely define the generic, you can also give options with :method
Algernon69 has joined #commonlisp
<aeth> phoe: I never got around to spinning it off or incorporating the suggestions from this channel (or was it the old #lisp one?) last time it came up
Algernon91 has joined #commonlisp
contrapunctus has quit [Quit: Gateway shutdown]
lisp123 has joined #commonlisp
<jstoddard> White_Flame: There is a small difference, if I understand the spec correctly. (defmethod foo (bar) nil) will result in a warning about the unused parameter, while (defmethod foo ((bar t)) nil) does not warn.
<phoe> aeth: thanks, I'll remember to remind you soon™
* phoe hides
Algernon69 has quit [Ping timeout: 252 seconds]
<bollu> please critique my code to check deep equivalence between classes that I know have only ints, symbols, and other classes
<Bike> "instances of classes" or "objects", you mean, right?
<pjb> bollu: instead of reduce, you would want to use every
<bollu> Bike yes, sorry, I mean objects*
<bollu> pjb nice
lisp123 has quit [Ping timeout: 256 seconds]
<bollu> is there some way to refactor the `if` as well? the else with the `nil` feels unaesthetic to me
<Bike> (and (equal ...) (let* ...))
<pjb> (and (equal (class-of x) …) (every (lambda (slot) (let* … (or (and (not (slot-boundp x name)) (not (slot-boundp y name))) (deepeq (slot-value x name) (slot-value y name))))) (class-direct-slots (class-of x))))
<White_Flame> jstoddard: cool
<pjb> bollu: ie, you want to test for slot-boundp before calling slot-value.
<White_Flame> I recall that now that you mention
<bollu> pjb what does that do?
<pjb> It's the body for deepeq
<bollu> pjb I meant, why do I need to test for slot-boundp? Doesn't asking for an unbound slot return `nil`?
<pjb> because slots can be unbound.
gaqwas has quit [Remote host closed the connection]
<pjb> slot-value on an unbound slot signals an unbound-slot condition.
<bollu> ahh
<phoe> bollu: don't forget to CALL-NEXT-METHOD or use CLASS-SLOTS, because CLASS-DIRECT-SLOTS won't give you indirect slots.
<bollu> phoe I don't know what those are yet :D
<bollu> phoe but sure, I'll switch to class-slots
<pjb> bollu: my example gave you both class-slots and class-directs-slots…
<Bike> meaning inherited slots.
<Bike> direct slots will only be those in the class definition itself.
<bollu> pjb I don't follow. Doesn't the code |(and (equal (class-of x) …) (every (lambda (slot) (let* … (or (and (not (slot-boundp x name)) (not (slot-boundp y name))) (deepeq (slot-value x name) (slot-value y name))))) (class-direct-slots (class-of x))))| call |class-direct-slots|, and not |class-slots|?
<bollu> Bike ah, I see. okay
<Bike> get some sleep, phoe
sloanr has joined #commonlisp
<pjb> bollu: yes, it does, because I just copied your code, but you will want class-slots instead.
<pjb> bollu: I was refering this example: https://termbin.com/8anb
<bollu> pjb ah, I totally missed that distinction the first time around.
<bollu> Do I need to think about whether what I am doing is safe under REPL reloads every time I define a thing in CL? It seems to me that defclass is preferred over defstruct because it behaves better with respect to changes in the REPL?
<Bike> it's not really repl specific, but yeah, defclass has defined redefinition semantics and defstruct does not.
<bollu> Bike are there other constructs that do not have well defined redefinition semantics?
<Bike> hmm. off the top of my head, proclamations, probably
Algernon91 has quit [Quit: Leaving]
<bollu> Another feeling that I get is that common lisp is "large" as a language. Is this unfounded?
<Bike> it has a big standard library and stuff, sure.
monaaraj has quit [Ping timeout: 256 seconds]
sloanr has quit [Remote host closed the connection]
monaaraj has joined #commonlisp
sloanr has joined #commonlisp
<pjb> bollu: nothing old is large. Android was 3500 classes and 350,000 methods a few years ago. Probably much bigger nowadays.
rgherdt has joined #commonlisp
<bollu> Bike do you consider CLOS as part of the stdlib? or as part of the core language
<Bike> of course.
<Bike> the metaobject protocol isn't part of the standard, but the object system definitely is
<bollu> Bike I am unsure if the of course refers to it as stdlib or core language ;)
<bollu> Now I have another problem as I migrate from raw lists to classes: I need to write my writers!
<bollu> is there a cheap way to get a decent pretty printer?
<sm2n> (format t "~a" ...)?
<Bike> print-unreadable-object is helpful usually.
<Bike> the standard library is part of the core language. lisp isn't like C or something where there's an alternate "freestanding" version.
<bollu> sm2n that prints the pointer, yes. But not the actual memory
<bollu> But not the actual data*
<bollu> Error: The symbol "PRINT-UNREADABLE-OBJECT" is not external in the CLOS package.
<bollu> Hmm
<Bike> print-unreadable-object is part of the standard library, i.e. in the CL package
<Bike> there is no standard way to dump the actual memory. the lisp system does not define anything about memory
<sm2n> Right, if you're printing an object what you want to do is (defmethod print-object ((o my-class) s) ...)
<sm2n> usually you put print-unreadable-object in there
<sm2n> judging by your previous posts, you are probably familiar with haskell, so that is like implementing Show
<bollu> yes, I'm familiar with haskell. and thanks, that makes sense
<bollu> (let ((x (make-instance 'inst-assign :lhs :x :rhs :y))) (print-unreadable-object (x *standard-output* :type t :identity t))) => #<INST-ASSIGN 40200D2CDB>; NIL
<bollu> that's not what I expected, unfortunately
<Bike> what exactly do you expect? automatic printing of all the slots and their values?
miique has quit [Ping timeout: 240 seconds]
gaqwas has joined #commonlisp
sloanr has quit [Remote host closed the connection]
<Bike> if you want to just see what makes up an object, you can use cl:describe. but that's not suitable for anything programmatic, which is what i think you're doing?
sloanr has joined #commonlisp
<bollu> Bike yes, I was indeed hoping for automatic printing
<bollu> pjb thanks!
<bollu> Bike what does one usually do? write custom printers?
frgo has quit [Ping timeout: 256 seconds]
<Bike> usually. it depends on what you are doing.
<Bike> for example, most of the time i don't want all slot values printed, since i'm working with complex graph structures. so i define a printer that only prints the name or some other identifier.
<Bike> if i wanted to actually de/serialize objects with a text format, i'd need to do something else
<bollu> I see. I'm prototyping a compiler optimization. I just want to debug print the IR. The output of cl:describe is actually quite close to what I want. All I need is for it to print the slots on a single line
<sm2n> Are you familiar with the inspector?
<Bike> really? IR is in fact what i usually work with. well, if that's what you want
<bollu> Bike yeah. I have basic blocks, but small ones, so I don't mind just scanning it by eye.
<bollu> sm2n I'm not.
<sm2n> You may want to explore that then
<_death> defstruct generates a default printer that prints all slots.. sometimes it's useful, but often you don't want to print some of the slots, so have to define your own function/method.. defclass's default printer just displays the class name and the instance's "identity", but you can define a print-object method to print more slots
luis9 has joined #commonlisp
<bollu> _death Is there's a way to get such a default printer for defclass?
<bollu> sm2n the inspector is a good approximation. It only seems to show me the data structure one level deep. Can I get it to expand fully?
<sm2n> I don't know, I don't use lispworks
luis has quit [Ping timeout: 268 seconds]
luis9 is now known as luis
<sm2n> In emacs/sly, it only goes one level deep, but you can click to go further
thomaslewis has joined #commonlisp
<_death> bollu: there are many ways, depending on what you mean by "default".. there's also the question of whether you really need such a "default"
<sm2n> bollu: You could redefine print-object and use the mop to iterate over slots
<sm2n> if that's really what you want
<bollu> sm2n doing that right now, writing a debug-show based off of the deepeq slot iteration
<_death> CL has an extensible pretty printer, which allows you to print any object in a way of your choosing
<bollu> I really like this introspection stuff
thomaslewis has left #commonlisp [#commonlisp]
s-liao has joined #commonlisp
thomaslewis has joined #commonlisp
NotThatRPG has joined #commonlisp
Oladon has quit [Quit: Leaving.]
monaaraj has quit [Ping timeout: 256 seconds]
random-nick has quit [Ping timeout: 240 seconds]
Oladon has joined #commonlisp
monaaraj has joined #commonlisp
<bollu> Once again, I request code review for my show instance: https://gist.github.com/bollu/17ed6ccdc1b503909528578a3f551695
notzmv has quit [Ping timeout: 268 seconds]
<sm2n> Shouldn't that print stuff, not return data structures?
<sm2n> also, you can replace the let* in loop with for = ...
<sm2n> i.e (loop collect (let* ((a 1) (b 2)) (+ a b)) is functionally equivalent to (loop for a = 1 for b = 2 collect (+ a b))
<sm2n> additionally, you can use list as a variable name, and it won't collide with the function list, since they are in separate namespaces (rather than xs)
<bollu> sm2n hm, I feel I mischaracterized what I wanted. I wanted something that was quick and dirty to stare and and feed back into the repl quickly if need be. So I opt for returning a list for more manipulation
<sm2n> There's also a built-in flatten function, but that works on trees (arbitrary levels of nesting), but should work fine here
<bollu> sm2n oh, the loop = is neat
<bollu> sm2n I prefer `xs` as a variable name tbh.
<sm2n> sure, you do you, it's not really conventional though
<bollu> sm2n lispworks doesn't seem to know flatten
<sm2n> I code switch a lot when programming depending on the language, sometimes surprising even myself
<bollu> sm2n oh? I see. in common lisp convention, I'd write `list`, I take it?
Inline has joined #commonlisp
<sm2n> oh, whoops, flatten is in the alexandria package
<sm2n> I use it often enough that I had forgotten
<sm2n> and yes
<sm2n> and I guess another thing I would change is to specialize your last method on standard-object
<bollu> sm2n what are things other than standard-object, number, symbol? I guess.. string?
<sm2n> yeah
<sm2n> I would probably make the default case the identity instead
<sm2n> also, your method will fail on improper lists
<bollu> sm2n how do I fix it for improper lists
<sm2n> there are essentially two types of improper lists
<bollu> I don't know this. I only the ones of the form `(a . b)`
<sm2n> (chains of) conses that don't terminate with a nil, and circular lists
<sm2n> you described the first type
<sm2n> the second looks like #1=(1 2 3 #1#)
<sm2n> err
<sm2n> #1=(1 2 3 . #1#)
<sm2n> this will lead to an infinite loop if you don't do cycle detection
<bollu> ah
<bollu> mh
<sm2n> the printer/reader have logic for this built in toggled by *print-circle*
xaltsc has joined #commonlisp
<bollu> damn I don't want to implement the two pointers algorithm for my dinky throwaway debug code :)
<bollu> can I invoke them?
<bollu> the printer?
<sm2n> yeah I wouldn't bother
<bollu> right
<sm2n> well, you can to print
<sm2n> that's what your repl does
<sm2n> and format etc
gaqwas has quit [Ping timeout: 240 seconds]
<sm2n> just throwing that out there
aeth has quit [Ping timeout: 240 seconds]
<sm2n> the other kind of improper list can be handled by looping and checking the type of (rest list)
<Alfr> bollu, there's DESCRIBE and INSPECT.
<Alfr> bollu, also *PRINT-CIRCLE* defaults to NIL.
<Alfr> bollu, so you have to turn it on when you want to rely on printing to show you things.
taiju has quit [Ping timeout: 240 seconds]
aeth has joined #commonlisp
<bollu> Alfr mh, okay
<bollu> alright, thanks a lot for all the help! I'm off to bed now