jackdaniel 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> | Pastebin: <https://plaster.tymoon.eu/>
bjorkintosh has joined #commonlisp
bjorkintosh has joined #commonlisp
waleee has quit [Ping timeout: 260 seconds]
ldb has joined #commonlisp
dnhester26 has joined #commonlisp
dnhester26 has quit [Ping timeout: 265 seconds]
eddof13 has joined #commonlisp
eddof13 has quit [Client Quit]
thuna`` has joined #commonlisp
thuna` has quit [Read error: Connection reset by peer]
thuna``` has joined #commonlisp
NotThatRPG has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
thuna``` has quit [Changing host]
thuna``` has joined #commonlisp
thuna``` is now known as thuna`
thuna`` has quit [Quit: Quit]
<paulapatience> dbotton: Maybe mention the use of % prefix for slots so that they cannot be accessible publicly via slot-value if the accessor shares the same name and is itself exported.
<dbotton> good point
<paulapatience> It's not used by everyone, but the convention exists
<dbotton> right I would mention it for sure
<dbotton> need to write it up better and the other notes been making
<paulapatience> Also, mention that one convention for accessor naming is that they should not be prefixed with the class name, because it is awkward when you have differently named subclasses (there are also other reasons). This is actually where package namespacing comes in handy, in case you want the same name for a generic function but a different lambda list.
<paulapatience> Again, that convention is not universally followed
<aeth> the class prefix is a struct convention (though the struct can configure the conc-name)
<aeth> (including setting it to nothing)
<paulapatience> Another thing I learned from yitzi recently is that you can make a generic predicate to tell if a specific class implements a certain protocol rather than having an abstract superclass
<aeth> so if I see a class prefix, I assume it was refactored from a struct
<dbotton> ya sort of defeats packages and classes to include prefixes
<aeth> well, no, it defeats the purpose of generic
<dbotton> that too
<pillton> You shouldn't think of generic functions as being associated with a class. Functions perform actions. Classes encapsulate state.
random-nick has quit [Ping timeout: 260 seconds]
<dbotton> paulapatience - generic predicate to tell if a specific class implements a certain protocol - just adding something to indicate you implemented it?
<dbotton> pillton: the GFs in this context more about interfaces
<dbotton> interface to what is the question - but I understand your point which is more not seeing CL with a C++ eye
<pillton> Sure. The functions have nothing to do with the class though. They are the interface to the actions that need doing. They can be generic, macros or normal functions.
istewart has quit [Quit: Konversation terminated!]
mrcom has quit [Ping timeout: 244 seconds]
<dbotton> well they act on them, and if you "model" things can see it as if do
<dbotton> some early books for sure presented CL more C++y
<dbotton> for classes
<paulapatience> dbotton: Suppose someone has an instance of a class and wants to know if they can call a protocol function. You have two options: You can do typep to check for all the types you know implement the protocol, or you call protocol-implemented-p (where presumably it is specialized on the appropriate classes to return T).
<pillton> One thing I like about lisps in general is that they have one way to perform an invocation. None of this f(x,y) versus x.f(y) or y.f(x) confusion.
<dbotton> ok so a programmer indicator
<paulapatience> The problem with typep is that unless all classes implementing the protocol have a common superclass, you can't know if a third-party implementation of the protocol does implement it
<paulapatience> yitzi knows more about this. He believes for example that it was a mistake in gray streams to export the class hierarchy.
<dbotton> So far I have just avoided trying to emulate java interfaces
<paulapatience> I have not yet used this pattern, but I think it will simplify the design of some of my in progress libraries
<dbotton> certainly could
<paulapatience> Ok, actually, another thing you could add to your document is the client pattern
<paulapatience> It is widely used in s-expressionists libraries, like Eclector
<paulapatience> Basically, you should only specialize a generic function if you own it, or if you own one of the types you are specializing
<paulapatience> Otherwise they can get overridden accidentally
<ldb> interface is a thing to work with static typing
<yitzi> To clarify more, I believe that exporting the classes in Gray streams should have been done as "mixins." There is already generic STREAMP, INPUT-STREAM-P, etc. So having the classes that as implied "you have use these" is confusing. And there are some minor contradictions as a result.
<ldb> in dynmaic typing it always possible to apply a generic function until it signals error at runtime or something
<dbotton> make sense
<paulapatience> The client is basically a (sometimes empty) class which users define to not break that rule
<paulapatience> Without having to possibly subclass a bunch of other classes
<paulapatience> Trucler is a good example of this pattern, and where I learned it from
<paulapatience> I think the Trucler manual has a small paragraph explaining it
<dbotton> will take a look
<ldb> client pattern unifies eql based dispatch
amb007 has joined #commonlisp
yitzi has quit [Remote host closed the connection]
ldb has quit [Ping timeout: 252 seconds]
thuna` has quit [Ping timeout: 260 seconds]
amb007 has quit [Ping timeout: 252 seconds]
gsilvers has quit [Ping timeout: 246 seconds]
amb007 has joined #commonlisp
xlymian has quit [Ping timeout: 276 seconds]
rozenglass has joined #commonlisp
amb007 has quit [Ping timeout: 276 seconds]
dnhester26 has joined #commonlisp
thuna` has joined #commonlisp
dnhester26 has quit [Ping timeout: 252 seconds]
X-Scale has joined #commonlisp
<beach> dbotton: You have to export names of slot readers/writers only if they are part of the protocol. A class can have some slots with private accessors.
<beach> dbotton: Similarly, there may be private generic functions that apply to a class, and you don't want to export their names.
<beach> dbotton: More generally, I guess, "exposing an object" does not make much sense.
famicom_guy has quit [Ping timeout: 252 seconds]
<beach> dbotton: And the term "class method" does not make sense.
famicom_guy_ has joined #commonlisp
<beach> dbotton: And I don't understand the convention of using meta-names of packages that start with a colon.
<beach> dbotton: It is definitely not necessary to use :IMPORT-FROM, and recommend not using it. It is much better to use an explicit package prefix.
<beach> dbotton: This advice has been given over and over here.
brokkoli_originl has joined #commonlisp
<aeth> I suppose "class method" could be interpreted to mean "a method automatically generated by DEFCLASS"
<beach> dbotton: Why do you use uninterned symbols for package names, but not for the symbol names they export? And then you sometimes use keyword symbols for package names as well as in (IN-PACKAGE :TPAC).
brokkoli_origin has quit [Ping timeout: 252 seconds]
<aeth> though these automatically generated methods do not do anything special or different, afaik
jonatack has quit [Ping timeout: 244 seconds]
<beach> They usually become instances of STANDARD-READER-METHOD and STANDARD-WRITER-METHOD, but that's it.
<beach> dbotton: Instead of using a name such as SET-MYSLOT define a method on (SETF MYSLOT).
jonatack has joined #commonlisp
jonatack has quit [Ping timeout: 252 seconds]
jonatack has joined #commonlisp
thuna`` has joined #commonlisp
thuna`` has left #commonlisp [Leaving]
Lord_of_Life has quit [Ping timeout: 252 seconds]
Lord_of_Life has joined #commonlisp
istewart has joined #commonlisp
xlymian has joined #commonlisp
JuanDaugherty has joined #commonlisp
decweb has quit [Ping timeout: 252 seconds]
bittrie has joined #commonlisp
istewart has quit [Quit: Konversation terminated!]
<beach> dbotton: As a result of your remarks here, I started looking at the code for CLOG, and there are several things that could be improved. Do you take remarks on your code?
JuanDaugherty has quit [Ping timeout: 255 seconds]
dnhester26 has joined #commonlisp
JuanDaugherty has joined #commonlisp
dnhester26 has quit [Ping timeout: 260 seconds]
opcode has quit [Ping timeout: 260 seconds]
bittrie has quit [Quit: leaving]
JuanDaugherty has quit [Quit: JuanDaugherty]
<jmercouris> hayley: no need to be a jerk
jonatack has quit [Ping timeout: 252 seconds]
pillton has quit [*.net *.split]
pillton has joined #commonlisp
bjorkintosh has quit [*.net *.split]
mwnaylor has quit [*.net *.split]
drakonis has quit [*.net *.split]
Eoco has quit [*.net *.split]
cdegroot has quit [*.net *.split]
|3b| has quit [*.net *.split]
acidbong has quit [*.net *.split]
Irvise has quit [*.net *.split]
phadthai has quit [*.net *.split]
delyan_ has quit [*.net *.split]
nxtr__ has quit [*.net *.split]
Shinmera has quit [*.net *.split]
mal1 has quit [*.net *.split]
sukaeto1 has quit [*.net *.split]
bjorkintosh has joined #commonlisp
mwnaylor has joined #commonlisp
drakonis has joined #commonlisp
Eoco has joined #commonlisp
|3b| has joined #commonlisp
cdegroot has joined #commonlisp
Irvise has joined #commonlisp
phadthai has joined #commonlisp
acidbong has joined #commonlisp
delyan_ has joined #commonlisp
nxtr__ has joined #commonlisp
Shinmera has joined #commonlisp
mal1 has joined #commonlisp
sukaeto1 has joined #commonlisp
Renfield has quit [*.net *.split]
Bubblegumdrop has quit [*.net *.split]
terrorjack has quit [*.net *.split]
masinter has quit [*.net *.split]
stylewarning has quit [*.net *.split]
patrix has quit [*.net *.split]
splittist has quit [*.net *.split]
DragonMaus has quit [*.net *.split]
youthpastor has quit [*.net *.split]
fiddlerwoaroof has quit [*.net *.split]
rakka has quit [*.net *.split]
xantoz has quit [*.net *.split]
mrvdb has quit [*.net *.split]
jmiven has quit [*.net *.split]
Renfield has joined #commonlisp
Bubblegumdrop has joined #commonlisp
xantoz has joined #commonlisp
terrorjack has joined #commonlisp
stylewarning has joined #commonlisp
masinter has joined #commonlisp
DragonMaus has joined #commonlisp
splittist has joined #commonlisp
youthpastor has joined #commonlisp
patrix has joined #commonlisp
rakka has joined #commonlisp
fiddlerwoaroof has joined #commonlisp
mrvdb has joined #commonlisp
jmiven has joined #commonlisp
jonatack has joined #commonlisp
brokkoli_originl has quit [Ping timeout: 255 seconds]
Stenotrophomonas has joined #commonlisp
jonatack has quit [Ping timeout: 260 seconds]
jonatack has joined #commonlisp
amb007 has joined #commonlisp
shka has joined #commonlisp
<beach> Also, the remarks by dbotton prompted me to work on my book project on CLOS programming (from which the chapter on protocols is extracted), but I am not sure how long I will keep up the enthusiasm now that my favorite coauthor has developed other interests.
wacki has joined #commonlisp
rtypo has quit [Ping timeout: 245 seconds]
<beach> Maybe I should write the book openly so that people here can contribute. I'll give that some thought.
Th30n has joined #commonlisp
<paulapatience> beach: I would certainly read any draft and proofread.
<beach> Thanks! I know you are a good proofreader.
mgl has joined #commonlisp
bubblegum has quit [Read error: Connection reset by peer]
bubblegum has joined #commonlisp
wobbol has joined #commonlisp
Cymew has joined #commonlisp
pve has joined #commonlisp
dnhester26 has joined #commonlisp
King_julian has joined #commonlisp
Stenotrophomonas has quit [Ping timeout: 260 seconds]
Stenotrophomonas has joined #commonlisp
dnhester26 has quit [Ping timeout: 252 seconds]
Cymew has quit [Quit: Konversation terminated!]
Cymew has joined #commonlisp
<dbotton> beach: thanks! Just up but will read and incorporate
<dbotton> Beach yes!!! I would love comments and advice on CLOG's code!
pillton has quit [Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.4)]
<dbotton> Your advice and comments priceless
donleo has joined #commonlisp
dnhester26 has joined #commonlisp
X-Scale has quit [Ping timeout: 256 seconds]
X-Scale has joined #commonlisp
thuna`` has joined #commonlisp
Cymew has quit [Quit: Konversation terminated!]
Cymew has joined #commonlisp
<younder> beach How is the boot protocol coming along?
<beach> younder: Just finished phase 4. Thanks for asking.
<beach> dbotton: You you WHEN in a context where the value is needed. IF should be used then instead.
<beach> dbotton: And you have several violations of the rules stated on page 13 of the LUV slides by Norvig and Pitman.
<beach> dbotton: It also looks like you have significant code duplication.
chkhd has joined #commonlisp
<beach> dbotton: And since you have the same name for a slot and its reader, you suggest that it is OK to use SLOT-VALUE and WITH-SLOTS on it.
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
<dbotton> I will do a full walk through after your comments to spruce it up. It for sure needs it, was my first CL program
<beach> I see. You have a method on PRINT-OBJECT with an incorrectly indented body.
csos95 has quit [Quit: ZNC 1.8.2 - https://znc.in]
<dbotton> Beach one should not count on when returning nil?
<beach> You can count on it, but in order to signal the intent to the person reading your code, you should use WHEN and UNLESS only in a context where the value is not used.
<beach> Like in a PROGN before the last form, or in a TAGBODY.
<dbotton> Ok
<dbotton> When have laptop will look up the slides
<dbotton> I think i am ok with slot-value etc in the case of CLOG's use
<beach> You shouldn't be.
<beach> It prevents the use of auxiliary methods.
<dbotton> Ok. Good point
<beach> dbotton: Also, slots are implementation details. They may disappear as the result of maintenance.
<beach> dbotton: As my document on protocols indicates, all access should be though (typically generic) functions.
chkhd has quit [Quit: ZZZzzz…]
<beach> This point has also been iterated many times.
<dbotton> I very much appreciate that idea now
<dbotton> Four years ago didn't understand. Part of my recent comments
<dbotton> It should not have taken me that long to understand the idea coming to CL and near no documentation for it
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
wacki has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<dbotton> Beach I hope your CLOS book becomes a reality. There is a need for a well written practice as we understand it today books for idiomatic CL programming. I asked from start when learned of anything existed
Cymew has quit [Quit: Konversation terminated!]
chkhd has joined #commonlisp
Cymew has joined #commonlisp
csos95 has joined #commonlisp
danse-nr3 has joined #commonlisp
<beach> The problem is that there is so much to do, and not enough time to do it.
<dbotton> I know the feeling :) for me it is also how much I am not the best person to do
thuna`` has quit [Ping timeout: 260 seconds]
thuna`` has joined #commonlisp
King_julian has quit [Ping timeout: 252 seconds]
jonatack has quit [Ping timeout: 252 seconds]
wacki has joined #commonlisp
jonatack has joined #commonlisp
thuna`` has quit [Ping timeout: 252 seconds]
<pranav> beach: Thanks for the time you take out for this chatroom, not least for clarifying terminology, which I believe helps me read and understand CLHS and CLTL2 better.
jonatack has quit [Ping timeout: 248 seconds]
jonatack has joined #commonlisp
Cymew has quit [Quit: Konversation terminated!]
Cymew has joined #commonlisp
uhuh has joined #commonlisp
X-Scale has quit [Ping timeout: 256 seconds]
random-nick has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
uhuh has quit [Remote host closed the connection]
King_julian has joined #commonlisp
uhuh has joined #commonlisp
uhuh has quit [Ping timeout: 244 seconds]
zxcvz has joined #commonlisp
dnhester26 has joined #commonlisp
chkhd is now known as chkhd`
chkhd` has quit [Quit: ZZZzzz…]
chkhd has joined #commonlisp
alcor has joined #commonlisp
waleee has joined #commonlisp
dnhester26 has quit [Ping timeout: 252 seconds]
waleee has quit [Ping timeout: 252 seconds]
dino_tutter has joined #commonlisp
Noisytoot has quit [Remote host closed the connection]
Noisytoot has joined #commonlisp
<beach> pranav: Pleasure!
dnhester26 has joined #commonlisp
jonatack has quit [Ping timeout: 255 seconds]
jonatack has joined #commonlisp
domovod has joined #commonlisp
domovod has quit [Client Quit]
danse-nr3 has quit [Quit: meal break]
Stenotrophomonas is now known as brokkoli_origin
zxcvz has quit [Quit: zxcvz]
bjorkint0sh has joined #commonlisp
bjorkintosh has quit [Ping timeout: 260 seconds]
jonatack has quit [Ping timeout: 245 seconds]
jonatack has joined #commonlisp
wacki has quit [Read error: Connection reset by peer]
wacki has joined #commonlisp
thuna` has quit [Ping timeout: 255 seconds]
decweb has joined #commonlisp
bjorkint0sh has quit [Quit: "Every day, computers are making people easier to use." David Temkin]
chkhd has quit [Quit: ZZZzzz…]
bjorkintosh has joined #commonlisp
bjorkintosh has joined #commonlisp
chkhd has joined #commonlisp
danse-nr3 has joined #commonlisp
thuna` has joined #commonlisp
Cymew has quit [Quit: Konversation terminated!]
chkhd has quit [Quit: ZZZzzz…]
cage has joined #commonlisp
Th30n has quit [Quit: going off]
King_julian has quit [Ping timeout: 245 seconds]
msv has quit [Remote host closed the connection]
JuanDaugherty has joined #commonlisp
NotThatRPG has joined #commonlisp
rosin has joined #commonlisp
rosin has quit [Changing host]
rosin has joined #commonlisp
eddof13 has joined #commonlisp
rtypo has joined #commonlisp
Inline has quit [Ping timeout: 252 seconds]
<mwnaylor> In CLOS, is it possible to add a slot to an existing instance of a class?
<beach> No, the slot has to be added to the class.
<dlowe> the slot in existing instances will exist but be unbound
<beach> Oh, if there is an initform?
<dlowe> I can't remember for sure
<beach> mwnaylor: Making it possible to add slots to individual instances would make it much harder to implement slot access efficiently. Have you seen this possibility in any other language?
<dlowe> testing on sbcl and it honors the initform instead of having it be unbound
<beach> That's what I thought.
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
eddof13 has quit [Quit: eddof13]
lucasta has joined #commonlisp
JuanDaugherty has quit [Quit: JuanDaugherty]
<bike> you might get this in a more free-wheeling prototype-based object system, like you get in javascript
<beach> And Self, right?
<bike> Yes
<beach> So it is not impossible to create an efficient such a system, but a bit trickier.
<beach> But I was interested in the reason for mwnaylor asking this question.
<bike> being used to javascript, maybe, is what i was thinking
<beach> I see.
edgar-rft_ has joined #commonlisp
<beach> Sometimes a person will give as a reason something they heard from a friend, meant to be an argument against Common Lisp, without the person having considered the reason himself or herself.
edgar-rft has quit [Ping timeout: 252 seconds]
<beach> mwnaylor: The good news is that you can create such an object system in Common Lisp if you like. In fact, I think the GUI library (the name of which I forget) had such a system.
<beach> ... for CMUCL.
<mwnaylor> beach: I was was wondering if it would be simpler to patch onto an existing object rather than extending a class. FWIW, I'm still new to CLOS.
<bike> i thought one of the JSON libraries had some MOP business to match javascript objects, but i can't find it now
<beach> mwnaylor: It is a somewhat strange thing to want to do in terms of software engineering. What is the use case here?
jonatack has quit [Read error: Connection reset by peer]
jonatack has joined #commonlisp
<NotThatRPG> Is it possible to make a lisp file for sbcl that can be loaded into lisp OR used as a shebang script? Seems like LOAD won't like the shebang and bash won't like `;;; #!` but maybe there's a fix for this?
<mwnaylor> Messing w/ internals of stumpwm. Guess I'll be better served by learing proper CLOS and delving into the stumpwm source code.
ebrasca has joined #commonlisp
<bike> NotThatRPG: i believe SBCL defines a shebang reader macro for exactly this purpose.
<bike> but that won't help with the semicolons
<beach> mwnaylor: You can always stick the associated object in a hash table with the original object as a key.
<NotThatRPG> bike: I tried to load such a file (inside a script for buildapp), and got an error...
<ixelp> SBCL 2.4.7 User Manual
<NotThatRPG> I don't see an option for `sbcl --load hello.lisp"` in the manual there.
<NotThatRPG> Not a huge problem: easy to split into a "body" file and a shebang wrapper.
<bike> yeah, i think you have to use --script instead of --load
<bike> --script ignores the shebang, in addition to other stuff it does
<bike> but it still loads the file.
edgar-rft_ is now known as edgar-rft
<ixelp> wg-manager/wg-manager.lisp at master · Shinmera/wg-manager · GitHub
<mwnaylor> beach: Interesting implementation. Clojure has defrecord, which allows adding new elements w/o changing the nature of the original object. Lisps dialects tend to be flexible about modifying data structures.
<paulapatience> With a #||# comment you can have exec be the second line. By default executable scripts go through /bin/sh
wacki has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<NotThatRPG> paulapatience: Thanks so much! didn't know that!
<bike> mwnaylor: does it not just define a new record type with the same name?
<bike> mwnaylor: in any case this doesn't seem like it does anything to individual objects, given that it defines a class
<mwnaylor> bike: no, same type. The modified instance will still be acceptable to any functions related to a protocol. If the type changed, it would not be accepted as a valid parameter.
<bike> so it does modify an instance somehow? it really doesn't look it does from the docs
<bike> plus it's clojure, which is all immutable stuff
<mwnaylor> It creates a new object that has the new element(s).
<bike> does it not create a new _class_ rather than a new object?
<mwnaylor> No, not a new class.
<bike> should i not be looking at https://clojuredocs.org/clojure.core/defrecord
<ixelp> defrecord - clojure.core | ClojureDocs - Community-Powered Clojure Documentation and Examples
<bike> because this is all pretty much saying new class to me
<beach> To me too.
alcor has quit [Remote host closed the connection]
<bike> or new record type, but that's not the point
alcor has joined #commonlisp
<beach> "Dynamically generates compiled bytecode for class [sic] with the given name..."
<mwnaylor> As you can see, the types are the same. https://pastebin.com/67h4yHFX
<ixelp> user> (defrecord Point [x y])user.Pointuser> (def two-d (->Point 1 2))#'us - Pastebin.com
<bike> ...okay, so it's _assoc_ that's effectively adding a field here.
<bike> assoc is creating an object.
<bike> but sure, so you can add a field to an object this way.
<beach> mwnaylor: This is not hard to accomplish in a programming language. The hard part is to make it efficient. If you are not careful, each access to a field would require a hash-table lookup.
<bike> it kind of looks like the object is a hash. i'm kind of curious how this is implemented. an actual java class with an extra field for a hash table of extra fields?
<beach> mwnaylor: I am convinced that the designers of CLOS avoided this features because of such additional cost. But, again, an object system can be designed in, and added to, Common Lisp that has this feature. I wish I could remember the system that already did that.
<bike> the docs mention an "extension field map" and a special field __extmap, maybe that's what those are
<bike> https://cl-json.common-lisp.dev/cl-json.html#PROPERTIES-OF-FLUID-OBJECTS aha, this is the json thing i was thinking of
<ixelp> CL-JSON
<beach> The GUI system was named Garnet.
<beach> Oh, I guess the object system was named Garnet as well.
<bike> https://github.com/sharplispers/cl-json/blob/master/src/objects.lisp#L96-L115 here's where setf on a missing slot is made to add a slot
<ixelp> cl-json/src/objects.lisp at master · sharplispers/cl-json · GitHub
<beach> bike: So it's a hash-table lookup?
<mwnaylor> beach: Agreed (re: adding and making it efficient). Clojure has been designed to make this somewhat easy. That's why I was asking about something like an add-slot function that would modify an object.
<bike> beach: in clojure? i mean, maybe, but it's not stated outright
<beach> bike: I see.
<beach> mwnaylor: OK, and CLOS has avoided it in the name of efficiency. You would have to use a different object system like Garnet to do that in Common Lisp.
<beach> ... but since you are working with existing code, that might not be possible of course.
<beach> mwnaylor: Then just use a hash table as I suggested initially.
JuanDaugherty has joined #commonlisp
Inline has joined #commonlisp
<beach> mwnaylor: Or just create a subclass with a single instance.
<mwnaylor> beach: I'll keep the hash table option in mind, though learning proper CLOS is probably the better option for *me*. Even with that option, would still have to explore the stumpwm source code. A lot of stuff in there that uses its own macros to define classes rather than simpler defclass inheritance.
<beach> Hmm, yes, I see.
cmack has joined #commonlisp
Inline has quit [Quit: Leaving]
wacki has joined #commonlisp
thuna`` has joined #commonlisp
thuna`` has quit [Ping timeout: 255 seconds]
dans49186 has joined #commonlisp
danse-nr3 has quit [Ping timeout: 255 seconds]
eddof13 has joined #commonlisp
eddof13 has quit [Client Quit]
yitzi has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
Perflosopher has quit [Quit: The Lounge - https://thelounge.chat]
mzan has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
mzan has joined #commonlisp
Perflosopher has joined #commonlisp
amb007 has quit [Ping timeout: 244 seconds]
JuanDaugherty has quit [Quit: JuanDaugherty]
mzan has quit [Client Quit]
mzan has joined #commonlisp
msv has joined #commonlisp
amb007 has joined #commonlisp
dans49186 has quit [Remote host closed the connection]
danse-nr3 has joined #commonlisp
lucasta has quit [Remote host closed the connection]
waleee has joined #commonlisp
mgl has quit [Ping timeout: 245 seconds]
kamafam has joined #commonlisp
danse-nr3 has quit [Remote host closed the connection]
danse-nr3 has joined #commonlisp
danse-nr3 has quit [Client Quit]
kamafam has quit [Read error: Connection reset by peer]
Inline has joined #commonlisp
Oladon1 has joined #commonlisp
lucasta has joined #commonlisp
Oladon has quit [Ping timeout: 276 seconds]
jweeks has joined #commonlisp
dnhester26 has joined #commonlisp
dnhester26 has quit [Ping timeout: 252 seconds]
mgl has joined #commonlisp
cage has quit [Remote host closed the connection]
danza has joined #commonlisp
<yottabyte> I'm trying to run a web request which looks like this: https://pastebin.com/L3T1np2L with uiop:run-program. mine looks a little different because it's just one line, no breaks with \, but I keep getting an error. I'm using FORMAT to format it. the thing is I output the string that I'm trying to execute, and when I copy and paste it into my terminal, it works fine
<ixelp> curl --request POST \ --url https://api.sendgrid.com/v3/mail/send \ --head - Pastebin.com
<yottabyte> I originally tried to make this request with dexador or drakma but couldn't figure it out, but I could get simple curl requests (like GETs) to work with uiop:run-program, so I was like okay let me try this one
bjorkintosh has quit [Quit: "Every day, computers are making people easier to use." David Temkin]
<yottabyte> I think it has something to do with escaping double quotes, but it doesn't print out
mgl has quit [Ping timeout: 245 seconds]
Inline has quit [Ping timeout: 248 seconds]
attila_lendvai has joined #commonlisp
attila_lendvai has quit [Remote host closed the connection]
attila_lendvai has joined #commonlisp
selwon is now known as selpoke
xlymian has quit [Ping timeout: 276 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
shka has quit [Ping timeout: 245 seconds]
rosin has quit [Quit: rosin]
rosin has joined #commonlisp
rosin has quit [Client Quit]
rosin has joined #commonlisp
rosin has quit [Client Quit]
rosin has joined #commonlisp
rosin has quit [Client Quit]
rosin has joined #commonlisp
danza has quit [Quit: new bits]
danza has joined #commonlisp
robin has quit [Quit: Leaving]
wacki has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
danz70516 has joined #commonlisp
danza has quit [Ping timeout: 260 seconds]
dustinm` has quit [Quit: Leaving]
dnhester26 has joined #commonlisp
danz70516 has quit [Remote host closed the connection]
danza has joined #commonlisp
dustinm` has joined #commonlisp
cmack has quit [Ping timeout: 276 seconds]
m5zs7k has quit [Ping timeout: 252 seconds]
m5zs7k has joined #commonlisp
dnhester26 has quit [Ping timeout: 252 seconds]
robin has joined #commonlisp
danza has quit [Quit: testing...]
danza has joined #commonlisp
danza has quit [Client Quit]
danza has joined #commonlisp
<paulapatience> yottabyte: What does your run-program invocation look like?
bubblegum has quit [Ping timeout: 252 seconds]
bubblegum has joined #commonlisp
akoana has joined #commonlisp
mathrick has quit [Ping timeout: 260 seconds]
varjag has joined #commonlisp
mathrick has joined #commonlisp
<Alfr> yottabyte, unless you insist, you're likely better off using the list version for COMMAND, that should avoid the shell escape hell ...
pve has quit [Quit: leaving]
donleo has quit [Remote host closed the connection]
donleo has joined #commonlisp
bubblegum has quit [Read error: Connection reset by peer]
bubblegum has joined #commonlisp
alcor has quit [Ping timeout: 252 seconds]
troojg has joined #commonlisp
dino_tutter has quit [Ping timeout: 265 seconds]
amb007 has quit [Ping timeout: 245 seconds]
amb007 has joined #commonlisp
amb007 has quit [Ping timeout: 252 seconds]
awlygj has joined #commonlisp
donleo has quit [Ping timeout: 252 seconds]
attila_lendvai has quit [Ping timeout: 248 seconds]
troojg has quit [Ping timeout: 276 seconds]
akoana has quit [Quit: leaving]
danza has quit [Quit: so long]
bubblegum has quit [Ping timeout: 252 seconds]
zetef has joined #commonlisp
zetef has quit [Client Quit]
bubblegum has joined #commonlisp
varjag has quit [Ping timeout: 252 seconds]
waleee has quit [Ping timeout: 260 seconds]