buffergn0me has quit [Remote host closed the connection]
buffergn0me has joined #lisp
nanoz has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
techquila has joined #lisp
quazimodo has joined #lisp
Oladon has quit [Quit: Leaving.]
akater has quit [Remote host closed the connection]
akater has joined #lisp
robdog_ has quit [Ping timeout: 252 seconds]
Fare has joined #lisp
nanoz has quit [Read error: Connection reset by peer]
micro has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
wanz has quit [Quit: wanz]
esrse has joined #lisp
ltriant has quit [Quit: leaving]
dale has quit [Quit: dale]
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
nullniverse has quit [Ping timeout: 245 seconds]
nalkri has joined #lisp
micro has joined #lisp
bilb_ono has joined #lisp
robdog_ has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
dxh30 has joined #lisp
robdog_ has quit [Ping timeout: 252 seconds]
bilb_ono has quit [Quit: bilb_ono]
dxh30 has quit [Remote host closed the connection]
techquila has quit [Remote host closed the connection]
techquila has joined #lisp
bilb_ono has joined #lisp
sauvin has joined #lisp
robdog has joined #lisp
techquila has quit [Remote host closed the connection]
ealfonso has quit [Read error: Connection reset by peer]
techquila has joined #lisp
ealfonso has joined #lisp
Inline has quit [Quit: Leaving]
robdog has quit [Ping timeout: 252 seconds]
bilb_ono has quit [Quit: bilb_ono]
robdog has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
ahungry has quit [Remote host closed the connection]
zmt00 has joined #lisp
wanz has joined #lisp
zmt01 has quit [Ping timeout: 252 seconds]
nalkri has quit [Ping timeout: 245 seconds]
Fare has quit [Ping timeout: 246 seconds]
Fare has joined #lisp
robdog has joined #lisp
karlosz has quit [Quit: karlosz]
Jesin has quit [Ping timeout: 252 seconds]
robdog_ has joined #lisp
wigust has joined #lisp
Jesin has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
wigust- has quit [Ping timeout: 255 seconds]
robdog has joined #lisp
krwq has joined #lisp
robdog_ has quit [Ping timeout: 252 seconds]
slyrus_ has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
vlatkoB has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
bilb_ono has joined #lisp
bilb_ono has quit [Client Quit]
robdog_ has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
JohnMS_WORK has joined #lisp
jprajzne has joined #lisp
robdog has joined #lisp
Necktwi has joined #lisp
robdog_ has quit [Ping timeout: 252 seconds]
robdog has quit [Ping timeout: 252 seconds]
krwq has quit [Remote host closed the connection]
robdog has joined #lisp
ggole has joined #lisp
Fare has quit [Ping timeout: 245 seconds]
robdog has quit [Ping timeout: 252 seconds]
ggole- has joined #lisp
ggole has quit [Ping timeout: 240 seconds]
ggole_ has joined #lisp
robdog has joined #lisp
ggole- has quit [Ping timeout: 240 seconds]
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
quazimodo has quit [Ping timeout: 245 seconds]
quazimodo has joined #lisp
robdog_ has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
vibs29 has quit [Ping timeout: 250 seconds]
vibs29 has joined #lisp
quazimodo has quit [Ping timeout: 272 seconds]
makomo has joined #lisp
robdog has joined #lisp
robdog_ has quit [Ping timeout: 252 seconds]
<makomo>
morning
robdog has quit [Ping timeout: 252 seconds]
nowhere_man has joined #lisp
incal has joined #lisp
robdog has joined #lisp
nowhere_man has quit [Ping timeout: 252 seconds]
ggole_ has quit [Ping timeout: 240 seconds]
ggole has joined #lisp
robdog_ has joined #lisp
<splittist>
morning makomo
robdog has quit [Ping timeout: 252 seconds]
scymtym has quit [Ping timeout: 250 seconds]
ggole has quit [Read error: Connection reset by peer]
ggole has joined #lisp
FreeBirdLjj has joined #lisp
<incal>
how do I use the #= notation to refer to an element in a list, in that list? E.g., (1 a 2) where a should refer to the first element, i.e. 1, and the list should be (1 1 2)?
robdog_ has quit [Ping timeout: 252 seconds]
<no-defun-allowed>
(#1=1 #1# 2) will work, but that's not the purpose of it
<incal>
OK, which is?
<no-defun-allowed>
first of all, that won't work for any element, as the #1=value HAS to come first, and the #1# comes after. that's not the intended use, either, it's really only for handling circular values, or gensyms which have to be the same
<incal>
OK
<no-defun-allowed>
eg in the topic: #1=(programmable . #1#), or (eq '#1=#:foo '#1#) ; => T
robdog has joined #lisp
ggole has quit [Ping timeout: 240 seconds]
<incal>
hm, why are cirucular values usefuel?
<incal>
*useful
FreeBirdLjj has quit [Ping timeout: 255 seconds]
<no-defun-allowed>
circular references happen quite often in programs, such as if you have some kind of "node" in a tree which stores its children and parent
<incal>
ugly tree if it has itself as a child
<shka__>
incal: this is reader macro and therefore works on the read time
<no-defun-allowed>
shit happens!
<incal>
no doubt
<shka__>
using it to refer to values is perhaps no the best idea and may lead to weird consequences
<shka__>
on the other hand you may often find code like (when (null #1=(accessor object)) (setf #1# 'something))
robdog_ has joined #lisp
<incal>
you don't want a variable to hold it?
robdog has quit [Ping timeout: 252 seconds]
<shka__>
well, in this case (accessor object) is setfable place
<shka__>
so variable won't help
<shka__>
the above code checks, for instance if slot in the object accessed by accessor is null, and if it is null, it sets 'something
<shka__>
is that clear?
Ricchi has quit [Remote host closed the connection]
<incal>
I mean you can't set that place to a variable and use that to check for null and then set it if it is?
<jackdaniel>
## tokens are strictly about data (forms are later treated as a code), so (when (null #1=foo) (setf #1# 42)) is equivalent to (when (null foo) (setf foo 42))
<jackdaniel>
if "foo" is a form which is large enough it may buy you a few characters to abbreviate it with ##
<shka__>
jackdaniel: thanks
<shka__>
incal: what jackdaniel said
<jackdaniel>
you also gain at the lack of repetition (sometimes if you opencode long forms which repeat themself you may "fix" it at one place and forget aobut the other)
<jackdaniel>
that's all there is to it, not the cleverest meachanism in common lisp toolbox
<jackdaniel>
still it has its uses
<shka__>
yup
<shka__>
but you don't usually attempt to use it refer to an element in a list
<shka__>
it is fragile in such situations
<verisimilitude>
This is largely in place, also, to prevent infinite recursion when printing circular values, incal.
<verisimilitude>
Try setting *PRINT-CIRCLE* to NIL and then PRINT a nice circular list.
robdog_ has quit [Ping timeout: 252 seconds]
<verisimilitude>
So, having this notation, which is also available to the programmer, can be thought of mostly as being for the reader.
<incal>
## tokens are strictly about data, (accessor object) is only accessible as a data item and can't be referenced as a variable name?
<verisimilitude>
If you're creating nontrivial circularity, chances are you'll be doing it programmatically and without these reader macros.
<jackdaniel>
incal: (accessor object) is a function application, not a variable name (given it is not quoted)
<jackdaniel>
"accessor" is a function and "object" is its argument
<shka__>
incal: (accessor object) returns value that can be bound to variable but variable is it's own thing once established
<shka__>
which is usual thing in all programming languages as far as i can tell
Zaab1t has joined #lisp
<incal>
aha I see now
<shka__>
#1=foo and #1# is sort off a copy-paste ;-)
wanz has quit [Quit: wanz]
<incal>
so with your code, will (accessor
<incal>
object) be invoked a second time at #1#? Or just the returned object will be used?
schweers has joined #lisp
<jackdaniel>
that was unfortunate example because what is a function application in the first case in second it is a setf expansion
<shka__>
yeah
<jackdaniel>
I would recommend forgetting about it until you learn more
<shka__>
sorry, i thought you already know about setf
<shka__>
or rather, assumed
robdog has joined #lisp
rozenglass has quit [Remote host closed the connection]
<incal>
but in general if you assign code with #1= and then use #1#, is the code evaluated twice or the retun value used at #1#?
<jackdaniel>
if the form is evaluated, it is evaluated twice
<jackdaniel>
you'll see hello being printed a few times (not once)
<incal>
right
varjag has joined #lisp
<incal>
OK, thanks everyone
Zaab1t has quit [Quit: bye bye friends]
<shka__>
incal: this whole thing is not all that important, if you want to learn CL i suggest to read practical common lisp
<shka__>
it is well constructed book with proper chapter order
<White_Flame>
specifically, that source code from will be _read_ as (list (print "HELLO") (print "HELLO") (print "HELLO") (print "HELLO")), with each of those (print "HELLO") expressions being references to one instance of that expression
<shka__>
*a well constructed book with the proper chapter order
robdog has joined #lisp
<jackdaniel>
as in: chapter one is followed by chapter two (i.e not chapter three)? :-)
<White_Flame>
it's much more useful as an output abbreviator than an input mechanism
<shka__>
jackdaniel: as in: introduction is followed by a tour of the REPL
<shka__>
but your statement is also correct ^_^
robdog has quit [Ping timeout: 240 seconds]
heisig has joined #lisp
<beach>
White_Flame: I use it to write and read ASTs and other data structures. Then, preserving the shared structure is absolutely essential.
<White_Flame>
filled with literals?
<White_Flame>
because obviously like the example above, if expression forms are shared, then they'll still be evaluated independently
<beach>
White_Flame: Consisting entirely of literals.
<White_Flame>
right, that's the one place where it is useful
<White_Flame>
as an input form
<White_Flame>
once the elements within the structure need to be evaluated post-read, then it's much better to construct it at runtime instead of at read time
robdog has joined #lisp
gareppa has joined #lisp
scymtym has joined #lisp
gxt has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
moldybits has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
robdog_ has joined #lisp
vlatkoB has quit [Ping timeout: 250 seconds]
robdog has quit [Ping timeout: 252 seconds]
wanz has joined #lisp
robdog_ has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
gxt has quit [Ping timeout: 272 seconds]
wanz has quit [Quit: wanz]
robdog_ has joined #lisp
gareppa has quit [Quit: Leaving]
gareppa has joined #lisp
gxt has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
zigpaw has quit [Remote host closed the connection]
robdog has joined #lisp
robdog_ has quit [Read error: Connection reset by peer]
Ukari has quit [Remote host closed the connection]
robdog_ has joined #lisp
gareppa has quit [Quit: Leaving]
robdog has quit [Ping timeout: 252 seconds]
robdog_ has quit [Ping timeout: 252 seconds]
wanz has joined #lisp
rozenglass has joined #lisp
vlatkoB has joined #lisp
robdog has joined #lisp
gareppa has joined #lisp
themsay has quit [Ping timeout: 245 seconds]
themsay has joined #lisp
Ukari has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
angavrilov has joined #lisp
wanz has quit [Quit: wanz]
CuriousCain has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
akater has quit [Quit: WeeChat 2.3]
wanz has joined #lisp
robdog has joined #lisp
gareppa has quit [Quit: Leaving]
gareppa has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
easye has quit [Remote host closed the connection]
beach has quit [Ping timeout: 252 seconds]
easye has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
gareppa has quit [Quit: Leaving]
norserob has joined #lisp
akater has joined #lisp
robdog has joined #lisp
<z3t0>
hi!
<shka__>
z3t0: hello
igemnace has quit [Quit: WeeChat 2.4]
dddddd has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
Achylles has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
norserob has quit [Quit: leaving]
norserob has joined #lisp
nalkri has joined #lisp
jprajzne has quit [Quit: jprajzne]
norserob has quit [Client Quit]
norserob has joined #lisp
z3t0 has quit [Remote host closed the connection]
robdog has joined #lisp
polezaivsani has quit [Ping timeout: 252 seconds]
z3t0 has joined #lisp
robdog_ has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
jprajzne has joined #lisp
robdog_ has quit [Ping timeout: 252 seconds]
z3t0 has quit [Remote host closed the connection]
wanz has quit [Quit: wanz]
robdog has joined #lisp
z3t0 has joined #lisp
robdog_ has joined #lisp
wanz has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog_ has quit [Ping timeout: 252 seconds]
nullhero1 is now known as nullheroes
hhdave has joined #lisp
polezaivsani has joined #lisp
orivej has joined #lisp
robdog has joined #lisp
wanz has quit [Quit: wanz]
robdog_ has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog_ has quit [Ping timeout: 252 seconds]
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
Lord_of_Life_ is now known as Lord_of_Life
m00natic has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
zigpaw has joined #lisp
gravicappa has joined #lisp
Ukari has quit [Quit: Leaving.]
Ukari has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
wanz has joined #lisp
gareppa has joined #lisp
beach has joined #lisp
gravicappa has quit [Ping timeout: 246 seconds]
wanz has quit [Remote host closed the connection]
wanz has joined #lisp
Bike has joined #lisp
robdog has joined #lisp
Ukari has quit [Remote host closed the connection]
Ukari has joined #lisp
moldybits has quit [Quit: WeeChat 2.4]
elderK has quit [Quit: Connection closed for inactivity]
robdog has quit [Ping timeout: 252 seconds]
Ukari has quit [Remote host closed the connection]
Ukari has joined #lisp
im0nde_ has quit [Ping timeout: 240 seconds]
themsay has quit [Read error: Connection reset by peer]
themsay has joined #lisp
robdog has joined #lisp
themsay has quit [Read error: Connection reset by peer]
themsay has joined #lisp
Ukari has quit [Remote host closed the connection]
robdog has quit [Ping timeout: 252 seconds]
Ukari has joined #lisp
im0nde_ has joined #lisp
robdog has joined #lisp
esrse has quit [Ping timeout: 252 seconds]
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
wanz has quit [Quit: wanz]
wxie has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
Essadon has joined #lisp
Essadon has quit [Max SendQ exceeded]
warweasle has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
Essadon has joined #lisp
Essadon has quit [Max SendQ exceeded]
jcowan has joined #lisp
<jcowan>
Yet another of those "Do people really use this?" questions: This one is about unbound slots. In principle, an unbound slot creates an out-of-band (out-of-type) value that can be used, carefully, when such a thing is called for. A slot declared "integer" can be expanded to "integer or sentinel value" by using unboundness as the sentinel, though it is not first-class.
<jcowan>
Does anyone in practice use slot-boundp and slot-makunbound in these ways?
<jcowan>
Or are unbound slots basically used only for lazy initialization?
robdog has joined #lisp
Essadon has joined #lisp
<polezaivsani>
the standard for function form evaluation says "The primary value of each such evaluation becomes an argument to the named function". This doesn't mean that that value and value of parameter binding should be EQ, or does it?
rpg has joined #lisp
<_death>
it means that they are EQL
robdog has quit [Ping timeout: 252 seconds]
<jcowan>
EQ is a speed hack that undermines object identity.
<Bike>
jcowan: i've done boundedenss like that before, but it makes everything more annoying to write
<jcowan>
It allows you to distinguish between two identical (that is, otherwise indistinguishable) objects
Achylles has quit [Ping timeout: 252 seconds]
<polezaivsani>
that seem to me to allow for both call by value and by reference semantics, right? And i was under the impression of CL being having a call by ref semantics.
<polezaivsani>
s/being having/having/
<Bike>
i would think that the value becoming an argument means that the value and the argument are the same
gareppa has quit [Quit: Leaving]
wxie has quit [Ping timeout: 252 seconds]
<_death>
polezaivsani: CL is pass by value
<jcowan>
Bike: Did you layer over it with a macro or anything?
robdog has joined #lisp
<Bike>
like, what, boundpcase? don't think so
dale_ has joined #lisp
dale_ is now known as dale
<polezaivsani>
_death, yeah, guess that's exactly what the spec says, thanks!
<jcowan>
polezaivsani: It's "call by object reference" like most object languages. So if you pass a mutable object and mutate it, the caller will see the mutation. But it is CBV in the sense that a call (foo bar) will not allow foo to change the value of the variable bar.
<jcowan>
unlike true call by reference languages
robdog has quit [Ping timeout: 252 seconds]
LiamH has joined #lisp
<pjb>
jcowan: the advantage of unbound places, is that they allow to represent the unknownness vs the nullity.
<polezaivsani>
jcowan, for that i believe the value of the argument should be vaguely (sorry, only learning) a reference to the object itself?
<jcowan>
CL doesn't actually have such references, though you can fake them using a class with one slot or half a cons or a tiny array.
incal has quit [Remote host closed the connection]
z3t0 has joined #lisp
Ukari has quit [Remote host closed the connection]
Ukari has joined #lisp
<schweers>
I’m not sure how to properly feed a search engine for this, so here goes: I’m trying to find out how much memory my lisp process used at its peak. Is there a way to do this, either with ccl, or (preferably) sbcl?
<Xach>
schweers: (room) sort of
<schweers>
Xach: what do you mean by “sort of”?
<Xach>
schweers: what you get back from room is free form and might not include what you want, though if you want a human-readable approximation, sbcl's room gives you that.
<schweers>
I’ll try it out, thanks for the tip.
<Xach>
I think there's actually a trivial-room equivalent library, but the name escapes me.
travv0 has left #lisp [#lisp]
rippa has joined #lisp
Zaab1t has joined #lisp
<splittist>
schweers: section 7.4.3 of the sbcl manual has details of the gc related things, including being able to log stats about each garbage collection.
<schweers>
splittist: yeah, I know about that. I want the peak memory consumption though.
<pjb>
schweers: anyways, room reports the memory used by lisp objects, but this is not the memory used by the lisp "unix" process. For that, you need to use unix tools.
<schweers>
pjb: I guessed so, which I why I want to go for a combination of the two.
<pjb>
schweers: and be careful that some unix tools report the addressing space used, or the virtual memory allocated, not the actual memory used.
<schweers>
speaking of which, Maximum resident set size should be what I’m looking for.
techquila has quit [Remote host closed the connection]
Jesin has quit [Quit: Leaving]
gareppa has joined #lisp
Jesin has joined #lisp
robdog has joined #lisp
josemanu1l has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
lumm has joined #lisp
josemanu1l is now known as josemanuel
robdog has joined #lisp
dyelar has quit [Quit: Leaving.]
robdog_ has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
varjag has quit [Quit: ERC (IRC client for Emacs 25.2.2)]
robdog_ has quit [Ping timeout: 252 seconds]
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
olaf has joined #lisp
robdog has joined #lisp
verisimilitude has quit [Remote host closed the connection]
devon has joined #lisp
cuso4 has quit [Quit: WeeChat 2.4]
jack_rabbit has quit [Ping timeout: 252 seconds]
gareppa has quit [Quit: Leaving]
robdog has quit [Ping timeout: 252 seconds]
olaf has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
nowhere_man has joined #lisp
copec has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
verisimilitude has joined #lisp
jprajzne has quit [Remote host closed the connection]
Fare has joined #lisp
CuriousCain has quit [Quit: WeeChat 2.2]
robdog has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
schweers has quit [Ping timeout: 240 seconds]
robdog has joined #lisp
CuriousCain has joined #lisp
robdog has quit [Ping timeout: 240 seconds]
robdog has joined #lisp
dyelar has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
DGASAU has quit [Read error: Connection reset by peer]
FreeBirdLjj has quit [Remote host closed the connection]
robdog has joined #lisp
karlosz has joined #lisp
Fare has quit [Ping timeout: 252 seconds]
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
DGASAU has joined #lisp
micro has quit [Ping timeout: 272 seconds]
Oladon has joined #lisp
micro has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
Jesin has quit [Quit: Leaving]
DGASAU has quit [Ping timeout: 246 seconds]
robdog_ has joined #lisp
Jesin has joined #lisp
rozenglass has quit [Remote host closed the connection]
robdog has quit [Ping timeout: 252 seconds]
xkapastel has joined #lisp
Oladon has quit [Read error: Connection reset by peer]
robdog has joined #lisp
hhdave has quit [Ping timeout: 246 seconds]
robdog_ has quit [Ping timeout: 252 seconds]
robdog has quit [Ping timeout: 252 seconds]
eddof13 has joined #lisp
Fare has joined #lisp
bilb_ono has joined #lisp
robdog has joined #lisp
ebrasca has joined #lisp
m00natic has quit [Read error: Connection reset by peer]
robdog has quit [Ping timeout: 252 seconds]
Necktwi has quit [Quit: leaving]
karlosz has quit [Quit: karlosz]
robdog has joined #lisp
Fare has quit [Ping timeout: 246 seconds]
Fare has joined #lisp
dreamcompiler has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
moldybits has joined #lisp
Fare has quit [Ping timeout: 246 seconds]
robdog has quit [Ping timeout: 252 seconds]
micro has quit [Ping timeout: 244 seconds]
micro has joined #lisp
sauvin has quit [Read error: Connection reset by peer]
moldybits has quit [Quit: WeeChat 2.4]
robdog has joined #lisp
moldybits has joined #lisp
rpg has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
rpg has quit [Ping timeout: 255 seconds]
maarhart has joined #lisp
maarhart has quit [Excess Flood]
maarhart has joined #lisp
maarhart has quit [Excess Flood]
maarhart has joined #lisp
maarhart has quit [Excess Flood]
maarhart has joined #lisp
maarhart has quit [Excess Flood]
maarhart has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
micro has quit [Ping timeout: 272 seconds]
robdog has quit [Ping timeout: 252 seconds]
Oladon has joined #lisp
eschatologist has quit [Ping timeout: 264 seconds]
Zaab1t has quit [Quit: bye bye friends]
micro has joined #lisp
eschatologist has joined #lisp
<Xach>
I think maybe I should use signals more?
<Xach>
Or non-error conditions, rather?
<sjl_>
I always think that too, but I rarely find situations that seem to call for them. Maybe I'm just not very creative.
rpg has joined #lisp
robdog has joined #lisp
<Xach>
I liked using them for progress bars. The intent was to make it easy to have one thing signal progress updates and then you could have the UI watch for those signals to make updates. But maybe it should just be callbacks?
<Xach>
I know Rich Hickey talked about using callbacks instead of conditions and not missing conditions much, but i don't know if i buy it.
<verisimilitude>
Just put the progress bar updating in the main loop.
<verisimilitude>
Alternatively, you could avoid a progress bar entirely and use a different interface.
robdog has quit [Ping timeout: 252 seconds]
robdog_ has joined #lisp
brandonz has quit [Ping timeout: 240 seconds]
bitmapper has joined #lisp
robdog_ has quit [Ping timeout: 252 seconds]
robdog has joined #lisp
hiroaki has joined #lisp
<scymtym>
Xach: i use conditions for progress reporting with lose coupling extensively and it works well so far
nanoz has joined #lisp
<bitmapper>
agh i'm going insane
<Xach>
scymtym: oh, good to hear
<bitmapper>
why does it have to be so hard to find a symbolics machine
<pjb>
1- not a lot of them was made. 2- those who have them keep them.
varjag has quit [Quit: ERC (IRC client for Emacs 26.1)]
karlosz has joined #lisp
Fare has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
<fouric>
would it be fair to call CL "gradually typed" given that at least SBCL will refuse to compile your program if it can demonstrate that the types are incorrec?
<aeth>
Absolutely. Afaik SBCL did it "first", before it was cool.
themsay has quit [Read error: Connection reset by peer]
josemanuel has quit [Quit: leaving]
themsay has joined #lisp
<jgkamat>
that seems reasonable to me
robdog has joined #lisp
Fare has quit [Ping timeout: 272 seconds]
Fare has joined #lisp
<pjb>
fouric: do you have an example of such a program that sbcl refuses to compile?
paul0 has joined #lisp
Essadon has quit [Quit: Qutting]
robdog has quit [Ping timeout: 252 seconds]
<jgkamat>
I don't think it refuses to compile, but throws warnings
<pjb>
because it would be very bad if it refuses to compile
<pjb>
At most, it can optimize the code in question, replacing it with a (error 'type-error :datum foo :expected-type 'too), it but still would have to compile!
<pjb>
But this would also be bad IMO, because it would prevent you to have a restart where the correct value is provided at run-time.
Achylles has joined #lisp
Fare has quit [Ping timeout: 246 seconds]
<pjb>
CL flow of control is actually very complex, and dynamic, with signal, handlers and restarts…
robdog has joined #lisp
akater has quit [Quit: WeeChat 2.3]
robdog has quit [Ping timeout: 252 seconds]
<aeth>
What SBCL actually does is it warns, and then compiles in the runtime error that must necessarily happen.
Fare has joined #lisp
<aeth>
SBCL DECLARE does prevent you from providing a value of the correct type at runtime. That is the primary difference with CHECK-TYPE, which must allow you to correct it at runtime. (Its DECLARE also enables it to make more assumptions, so it's faster in more ways than just that.)