<Xach>
Nilby: years of history on #lisp adds some context
<Nilby>
Ah. okay.
<Xach>
I skimmed through the non-marketing articles for Lisp info - one of the first that jumped out says "closer-mop is not portable"
<jmercouris>
Xach: OK
<jmercouris>
no need to be so rude
<Xach>
It's certainly possible that closer-mop is unsuitable for some reason but portability is a goal and if it falls short some context would be useful.
<Nilby>
Sorry. I'm not trying to stir up trouble.
<jmercouris>
You aren’t
<Xach>
No problem.
ljavorsk has quit [Quit: I'm out, bye]
<cl-arthur>
a non-portable portability/conformance library would be a nice paradox
ljavorsk has joined #lisp
davepdotorg has quit [Remote host closed the connection]
davepdotorg has joined #lisp
<Nilby>
portability.cl does report closer-mop favoribly
<jackdaniel>
portability libraries are not "universally" portable by definition, because their purpose is to span multiple implementations (so each implementation is special-cased)
<jackdaniel>
still, they are far more portable than implementation-specific package; also they usually leave door open for adding support for new implementations by providing convenient api
<Nilby>
If ½ my code was ½ as portable I might be ½ way there.
<jackdaniel>
:-)
davepdotorg has quit [Ping timeout: 256 seconds]
kirtai has joined #lisp
miasuji has quit [Remote host closed the connection]
elosant has quit [Quit: Connection closed for inactivity]
miasuji has joined #lisp
davepdotorg has joined #lisp
jonatack has joined #lisp
davepdotorg has quit [Ping timeout: 258 seconds]
davepdotorg has joined #lisp
aartaka has joined #lisp
<jmercouris>
Xach: it would also help if you read the article honestly without preconception
<jmercouris>
here is the context: "We first tried to set the slot default value directly by leveraging the introspection library closer-mop. It worked with the SBCL compiler but was not portable and very brittle, it was particularly difficult to handle inheritance correctly."
<jmercouris>
clearly we are saying that setting the slot default value is not portable
miasuji has quit [Remote host closed the connection]
miasuji has joined #lisp
davepdot_ has joined #lisp
aartaka_d has quit [Ping timeout: 240 seconds]
<Xach>
so clearly.
<jmercouris>
lol, whenever you are wrong, you refuse to admit it
davepdotorg has quit [Ping timeout: 260 seconds]
<jmercouris>
in my many years on this channel, I have yet to notice you admitting a mistake
<jackdaniel>
please refrain from making personal remarks
contrapunctus has left #lisp ["Disconnected: closed"]
aartaka has quit [Ping timeout: 272 seconds]
contrapunctus has joined #lisp
<jmercouris>
jackdaniel: interesting how you didn't make a comment when Xach said that I just "spew nonsense", apparently, not a personal attack?
davepdotorg has joined #lisp
<cl-arthur>
how did you try to use closer-mop to set the default values of the slots? Isn't setting the default values as easy as supplying a :initform or some :default-initargs?
<jmercouris>
cl-arthur: it is about taking a class that exists, and changing the default value
<jackdaniel>
putting my opinion aside, the former was explanation why he refuses to included what you write (i.e "because it is a nonsense"), the above otoh is ad hominem kind of argumentation
<jmercouris>
not about redefining a class or defining a class
davepdot_ has quit [Ping timeout: 256 seconds]
davepdotorg has quit [Read error: Connection reset by peer]
<jmercouris>
so imagine we have class X with slot Y with a default value of 5 or something
<jmercouris>
now we want to change to have a default value of 7 for new instantiations
davepdotorg has joined #lisp
<jmercouris>
jackdaniel: ah, so if we provide an explanation, we can freely insult people?
<jackdaniel>
I think that you've missed the point; either way please stop.
<jmercouris>
See through your bias, and see what you've written is false, he did not say my writing was nonsense, he said I write nonsense
<jackdaniel>
be as it may (I'm certain that I have some biases), I still urge you to stop.
<jmercouris>
We've had this exact discussion many times, where you point out the difference between the noun and the verb
<jmercouris>
anyways, this is off topic, so I will end it here
<jackdaniel>
thank you
<jackdaniel>
if you want to customize the initform, you are looking for the generic function slot-definition-initform
davepdotorg has quit [Ping timeout: 246 seconds]
<jackdaniel>
s/customize the initform/customize the form used to initialize the slot when no initarg is supplied/
miasuji has quit [Remote host closed the connection]
Stanley00 has quit [Remote host closed the connection]
miasuji has joined #lisp
break_point has joined #lisp
davepdotorg has joined #lisp
daphnis has joined #lisp
<cl-arthur>
should be possible to e.g. setf the initform/initfunction of the existent slots of an existent class appropriately when loading a config, yeah
davepdotorg has quit [Read error: Connection reset by peer]
miasuji has quit [Remote host closed the connection]
davepdotorg has joined #lisp
miasuji has joined #lisp
<jackdaniel>
cl-arthur: afaik it is not an accessor (only a reader), so you can't effectively setf it and expect that make instance will work
<jackdaniel>
you need to define a method
<Nilby>
Is there some accepted way or library for user object configuration/customization? I know about Shinmera's ubiquitous, but it's a little diffrent goals. I have a couple of ways that I'm not statisfied with. How does CLIM handle it? It seems like anything in CL must be better than "custom" in Emacs.
daphnis has quit [Remote host closed the connection]
<jackdaniel>
(also, changing a method a standard slot definition won't probably have an effect, one would need to have their own slot definition class)
davepdotorg has quit [Ping timeout: 256 seconds]
<cl-arthur>
jackdaniel: you're right, they're just defined as readers in the spec
<scymtym>
Nilby: i made https://github.com/scymtym/configuration.options which has a moderately flexible core but is a bit biased towards configuration via files, environment variables and commandline options. i think i made a CLIM-based configuration editor for it, but there would be no way to persist the changes, so that's only semi-useful
<Nilby>
scymtym: Thanks! I'll check it out.
miasuji has quit [Remote host closed the connection]
miasuji has joined #lisp
<Nilby>
scymtym: Very impressive :)
<scymtym>
thanks
toorevitimirp has quit [Ping timeout: 256 seconds]
miasuji has quit [Remote host closed the connection]
miasuji has quit [Remote host closed the connection]
miasuji has joined #lisp
break_point has quit [Remote host closed the connection]
<jackdaniel>
or, you could return some function that is global and is properly redefined (that is that after redefinition it is eq to itself - i.e a generic function)
miasuji has quit [Ping timeout: 260 seconds]
miasuji has joined #lisp
<cl-arthur>
or metaclass -> slot-definition subclass w/ config-value as extra slot -> populate those when loading config -> make a method on slot-definition-initfunction like (if (config-value ...) (wrap-config-value ...) (call-next-method)).
ski has joined #lisp
<jackdaniel>
yes, having a custom effective slot definition class is the way, that's why I've said "probably"
davepdotorg has joined #lisp
<jmercouris>
jackdaniel: thanks for the ideas
<jmercouris>
we’ve already committed to a different strategy for now, but maybe some of these concepts could be useful again for us
<jackdaniel>
if I had wanted to customize a new instance slot values, I'd simply write initialize-instance method, there is no need to use mop here
<cl-arthur>
a global map from class/slotd to config values, and some initialization method specialized on a mixin also seems decently clean yeah
pve has quit [Ping timeout: 260 seconds]
<jackdaniel>
hm, til you could put a form as a default-initarg, however it is not surprising after a thought, so scratch the part "if it is a value, not a form"
wsinatra has joined #lisp
miasuji has quit [Remote host closed the connection]
jxy has quit [Ping timeout: 258 seconds]
miasuji has joined #lisp
gaqwas has quit [Remote host closed the connection]
Alloc has quit [Ping timeout: 256 seconds]
Alloc has joined #lisp
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
Necktwi has quit [Ping timeout: 260 seconds]
davepdotorg has joined #lisp
nicktick has joined #lisp
saganman has joined #lisp
saganman has quit [Changing host]
saganman has joined #lisp
ljavorsk has quit [Ping timeout: 256 seconds]
Bike has joined #lisp
EvW has joined #lisp
hendursa1 has quit [Quit: hendursa1]
hendursaga has joined #lisp
ex_nihilo has quit [Quit: Leaving]
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
dra has quit [Quit: Leaving]
miasuji has quit [Remote host closed the connection]
Necktwi has joined #lisp
miasuji has joined #lisp
Alloc has quit [Ping timeout: 272 seconds]
Alloc has joined #lisp
dbotton_ has quit [Quit: -a- Connection Timed Out]
dbotton has joined #lisp
akoana has quit [Quit: leaving]
ech has quit [Ping timeout: 240 seconds]
hiroaki has joined #lisp
miasuji has quit [Remote host closed the connection]
miasuji has joined #lisp
Alloc has quit [Ping timeout: 258 seconds]
kir0ul_ has joined #lisp
ech has joined #lisp
frost-lab has quit [Quit: Connection closed]
devon has quit [Ping timeout: 260 seconds]
ebrasca has quit [Remote host closed the connection]
narimiran has joined #lisp
Blukunfando has quit [Ping timeout: 258 seconds]
Stanley|00 has joined #lisp
okflo has joined #lisp
Stanley|00 has quit [Disconnected by services]
Alloc has joined #lisp
miasuji has quit [Remote host closed the connection]
<jmercouris>
however we wanted to avoid the usage of global
random-nick has joined #lisp
<jmercouris>
globals, and we wanted to actually change the classes themselves so that inspecting them would show new default value init forms
<_death>
from what I gathered it sounds like you wanted to avoid something like "factory method" and instead chose to redefine classes?
Lord_of_Life has joined #lisp
Lord_of_Life has quit [Client Quit]
Lord_of_Life has joined #lisp
Lord_of_Life has quit [Changing host]
Lord_of_Life has joined #lisp
pankajsg has joined #lisp
duuqnd has joined #lisp
<_death>
by "factory method" I mean you could have something like a *configuration* special variable that a user sets to (make-instance 'my-configuration ...) and then there are methods like (defmethod config-create-buffer ((config my-configuration) &rest args) (apply #'make-instance 'my-buffer args)) and possibly a convenience function create-buffer that passes *configuration* to config-create-buffer
oxum has quit [Remote host closed the connection]
jonatack has quit [Quit: jonatack]
oxum has joined #lisp
Alloc has quit [Ping timeout: 258 seconds]
<_death>
or maybe something contextly
hnOsmium0001 has joined #lisp
miasuji has quit [Remote host closed the connection]
miasuji has joined #lisp
<jackdaniel>
the most portable way to change the initform (and the associated function) is to redefine the class, common lisp has your back and that operation has well-defined semantics (i.e your instances won't stop working etc)
oxum has quit [Ping timeout: 260 seconds]
jonatack has joined #lisp
dbotton_ has joined #lisp
dbotton has quit [Ping timeout: 260 seconds]
miasuji has quit [Remote host closed the connection]
miasuji has joined #lisp
<cl-arthur>
That reminds me - what's the cleanest way to invoke a macro at runtime? Any better option than giving a list-representation of the macro form to eval/compile?
oxum has joined #lisp
<phoe>
invoke, you mean macroexpand?
<Bike>
what do you want to "invoke"?
<beach>
Or (funcall (macro-function 'foo) <form> <environment>) if for some reason you don't want to use macroexpand.
<phoe>
a macro function is a standard function that translates from Lisp data to Lisp forms; you can call this function it by calling MACROEXPAND{,-1}
<jackdaniel>
if you need to expand the code at runtime, then eval is /the/ way (another is to rethink design, it is usually some misconception about your own program)
dbotton_ has quit [Ping timeout: 240 seconds]
<jackdaniel>
also, if you have a macro that takes a few parameters and a body to create a context, you may consider creating macros in a style that it expands into a funcall that passes a continuation
<_death>
beach: wouldn't first class environments also make sense in that configuration scenario?
<jackdaniel>
_death: wouldn't there be two different classes then? I think that would be undesireable
<_death>
jackdaniel: can't one environment inherit from another?
<jackdaniel>
sure, but then you have one class object (hence, one initform)
bitmapper has joined #lisp
<beach>
_death: Definitely. That's how I use them.
<beach>
... er, I probably misunderstood the question.
miasuji has quit [Remote host closed the connection]
<beach>
_death: You mean the scenario that jmercouris is talking about?
<_death>
jackdaniel: I'm suggesting a user create his own class that inherits from the default class (or some subclass of it)
<_death>
beach: yes
miasuji has joined #lisp
<jackdaniel>
I fail to see why would you need a separate environment to subclass a class
<beach>
_death: I haven't really followed the discussion. Sorry.
<jackdaniel>
unless you want to have two classes designated by the same symbol in different environments
dbotton has joined #lisp
<jackdaniel>
(where one is a subclass of the other one)
<cl-arthur>
"invoke" - expand the macro form and execute the results. Yeah, seems to be eval.
<_death>
jackdaniel: so in E1 there'll be a buffer class, and in E2 there will be a different buffer class that inherits from e1:buffer.. then (make-instance 'buffer) can be used
<_death>
jackdaniel: exactly.. because from reading jmercouris's article, it sounds like they go through all that trouble just so they can say (make-instance 'user-buffer)
<cl-arthur>
I've seen some (funcall `(lambda () (some-macro ...)) which incidentally work in certain implementations but just hide the eval-iness, I suppose.
<jackdaniel>
I think that this could be done, however I would argue that packages are much better fit (and of course all other ways we've discussed)
rgherdt has quit [Remote host closed the connection]
hiroaki has joined #lisp
amb007 has quit [Ping timeout: 265 seconds]
Steeve has joined #lisp
rgherdt has joined #lisp
amb007 has joined #lisp
Steeve has quit [Client Quit]
Steeve has joined #lisp
kirtai has quit [Quit: Leaving]
miasuji has quit [Read error: Connection reset by peer]
miasuji has joined #lisp
emys has quit [Ping timeout: 260 seconds]
Posterdati has joined #lisp
emys has joined #lisp
EvW has joined #lisp
<jmercouris>
_death: that just changes class instances
<jmercouris>
we want to change future instantiations of a class
pankajsg has quit [Ping timeout: 272 seconds]
miasuji has quit [Remote host closed the connection]
miasuji has joined #lisp
miasuji has quit [Read error: Connection reset by peer]
miasuji has joined #lisp
aaaaaa has joined #lisp
skapata has joined #lisp
emys has quit [Ping timeout: 260 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
emys has joined #lisp
gioyik has joined #lisp
narodism has joined #lisp
_Posterdati_ has joined #lisp
_Posterdati_ has quit [Client Quit]
_Posterdati_ has joined #lisp
Posterdati has quit [Ping timeout: 260 seconds]
miasuji has quit [Remote host closed the connection]
miasuji has joined #lisp
_Posterdati_ is now known as Posterdati
edgar-rft has quit [Quit: Leaving]
Stanley00 has joined #lisp
edgar-rft has joined #lisp
miasuji has quit [Read error: Connection reset by peer]
miasuji has joined #lisp
Stanley00 has quit [Ping timeout: 258 seconds]
Sauvin has quit [Read error: Connection reset by peer]
eddof13 has joined #lisp
lottaquestions has joined #lisp
miasuji has quit [Remote host closed the connection]
miasuji has joined #lisp
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
srhm has quit [Read error: Connection reset by peer]
Posterdati has quit [Ping timeout: 246 seconds]
Posterdati has joined #lisp
liberliver has quit [Ping timeout: 240 seconds]
kapil_ has joined #lisp
voidhawk has quit [Ping timeout: 260 seconds]
gioyik has quit [Ping timeout: 256 seconds]
Lord_of_Life_ has joined #lisp
Aurora_v_kosmose has quit [Ping timeout: 240 seconds]
Lord_of_Life has quit [Ping timeout: 240 seconds]
gravicappa has quit [Ping timeout: 258 seconds]
emys has quit [Ping timeout: 244 seconds]
emys has joined #lisp
Lord_of_Life_ is now known as Lord_of_Life
gravicappa has joined #lisp
Aurora_v_kosmose has joined #lisp
Alloc has quit [Ping timeout: 260 seconds]
Alloc has joined #lisp
oxum has quit [Quit: Leaving...]
cosimone has joined #lisp
cosimone has quit [Client Quit]
dbotton_ has joined #lisp
dbotton has quit [Read error: Connection reset by peer]
mason has quit [Quit: leaving]
mason has joined #lisp
gioyik has joined #lisp
nicktick has quit [Ping timeout: 256 seconds]
cosimone has joined #lisp
nicktick has joined #lisp
Lycurgus has joined #lisp
miasuji has quit [Ping timeout: 244 seconds]
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
bilegeek has joined #lisp
dbotton has joined #lisp
duuqnd has quit [Quit: Leaving]
dbotton__ has joined #lisp
dbotton_ has quit [Ping timeout: 260 seconds]
saganman has quit [Read error: Connection reset by peer]
dbotton has quit [Ping timeout: 244 seconds]
contrapunctus has left #lisp ["Disconnected: closed"]
dbotton has joined #lisp
dbotton__ has quit [Ping timeout: 272 seconds]
contrapunctus has joined #lisp
jw4 has quit [Read error: Connection reset by peer]
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
jw4 has joined #lisp
EvW has quit [Ping timeout: 244 seconds]
tamarindo has quit [Remote host closed the connection]
tamarindo has joined #lisp
emys has quit [Ping timeout: 265 seconds]
emys has joined #lisp
tamarindo has quit [Ping timeout: 240 seconds]
jxy has joined #lisp
EvW has joined #lisp
shka_ has quit [Ping timeout: 246 seconds]
<jasom>
hmm, is there no way to get the source port with sb-bsd-sockets:socket-receive?
<_death>
jmercouris: if you're referring to my paste, I didn't intend it as a solution to your issue
<jasom>
ah, found the answer to my own question; the port is returned as the 4th value
Inline has joined #lisp
okflo has quit [Remote host closed the connection]
wsinatra has quit [Quit: WeeChat 2.9]
Nilby has quit [Read error: Connection reset by peer]
emys has quit [Ping timeout: 240 seconds]
tamarindo has joined #lisp
gaqwas has joined #lisp
cosimone has quit [Quit: cosimone]
emys has joined #lisp
pve_ has quit [Quit: leaving]
emys has quit [Ping timeout: 272 seconds]
emys has joined #lisp
ramHero has quit [Remote host closed the connection]
rumbler31_ has joined #lisp
ramHero has joined #lisp
terpri_ has quit [Quit: Leaving]
emys has quit [Ping timeout: 258 seconds]
terpri has joined #lisp
emys has joined #lisp
terpri has quit [Ping timeout: 240 seconds]
gravicappa has quit [Ping timeout: 265 seconds]
Aurora_v_kosmose has quit [Ping timeout: 240 seconds]
Lord_of_Life has quit [Read error: Connection reset by peer]
Lord_of_Life has joined #lisp
Lord_of_Life has quit [Changing host]
Lord_of_Life has joined #lisp
bilegeek has quit [Ping timeout: 260 seconds]
amb007 has quit [Ping timeout: 260 seconds]
terpri has joined #lisp
Aurora_v_kosmose has joined #lisp
bilegeek has joined #lisp
emys has quit [Ping timeout: 260 seconds]
torbo has joined #lisp
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
emys has joined #lisp
sjl_ has quit [Ping timeout: 256 seconds]
azrazalea has quit [Quit: ZNC 1.6.2+deb2~bpo8+1 - http://znc.in]
azrazalea has joined #lisp
emys has quit [Ping timeout: 272 seconds]
emys has joined #lisp
rumbler31_ has quit [Ping timeout: 272 seconds]
dbotton_ has joined #lisp
random-nick has quit [Ping timeout: 256 seconds]
<dbotton_>
is there a squeak/pharo like x-platfrom graphical environment available for common lisp? in some ways portacle/emas (sans graphics) fills that niche but even so
<phoe>
nope.
<phoe>
McCLIM is not yet there
<phoe>
everything else that is somewhat usable that I am aware of depends on foreign libraries, like qtools/commonqt which is what I use
<phoe>
but that's not pharo-level of GUI integration
<dbotton_>
McCLIM is intended to offer that?
IPmonger has quit [Quit: ZNC 1.7.5+deb4 - https://znc.in]
IPmonger has joined #lisp
random-nick has joined #lisp
bilegeek has quit [Quit: Leaving]
<aeth>
dbotton_: X is designed to permit a client-server separation and there's an X client in pure CL called CLX so McCLIM using the CLX backend on Linux or similar Unix systems can offer a pure CL experience with no foreign libraries.
random-nick has quit [Ping timeout: 260 seconds]
<aeth>
Everything else will require CFFI, although it can still be effectively "zero dependency" if it directly calls the exposed OS APIs.
rgherdt has quit [Ping timeout: 272 seconds]
<dbotton_>
so the idea is use emacs and x - but nothing as tightly integrated as pharo?
<dbotton_>
just seems that lisp would be ideal for that sort of environment as well.
galex-713 has joined #lisp
EvW has quit [Ping timeout: 260 seconds]
emys has quit [Quit: Leaving]
<aeth>
dbotton_: the problem is that any editor/IDE has to compete with the flawed, but good-enough Emacs in order to get users, so no project has really gotten any momentum
<aeth>
feel free to write your own IDE, but you'll probably be writing it in Emacs
mrchampion has quit [Ping timeout: 260 seconds]
<dbotton_>
perhaps may, have done before
ex_nihilo has joined #lisp
<dbotton_>
but what though I am thinking about creating is something more like squeak or pharo
Blukunfando has quit [Remote host closed the connection]
phantomics has joined #lisp
mrchampion has joined #lisp
Inline has quit [Ping timeout: 272 seconds]
perrier-jouet has quit [Quit: WeeChat 2.9]
<phoe>
that is acceptable too
<Gnuxie[m]>
Tbh though, if someone put enough time to it, it is totally possible to beat Emacs+SLIME, it's relatively straight forward what would need to be done
<phantomics>
Last time I checked Swank was woefully undocumented
Lycurgus has quit [Quit: Exeunt]
nicktick has quit [Ping timeout: 264 seconds]
<phantomics>
Which makes it tough to develop an alternative Slime UX
froggey has quit [Ping timeout: 272 seconds]
kaftejiman has quit [Remote host closed the connection]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
<Gnuxie[m]>
I meant that it is clear what you would have to do, not that it was gonna be easy
perrier-jouet has joined #lisp
froggey has joined #lisp
gaqwas has quit [Ping timeout: 260 seconds]
Stanley00 has joined #lisp
galex-713 has quit [Ping timeout: 272 seconds]
galex-713 has joined #lisp
Stanley00 has quit [Ping timeout: 265 seconds]
gigetoo has quit [Ping timeout: 260 seconds]
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]