markong has quit [Ping timeout: 264 seconds]
pmc_ has joined #lisp
nowhere_man has joined #lisp
turkja has joined #lisp
attila_lendvai has quit [Quit: Leaving.]
zachk has quit [Quit: night]
kmb has quit [Quit: kmb]
kmb has joined #lisp
kmb has quit [Client Quit]
jameser has joined #lisp
nowhereman_ has joined #lisp
cromachina has joined #lisp
nowhere_man has quit [Ping timeout: 276 seconds]
EvW has quit [Ping timeout: 255 seconds]
quazimodo has quit [Ping timeout: 255 seconds]
sjl has joined #lisp
Tordek has quit [Ping timeout: 255 seconds]
dwts has quit [Ping timeout: 260 seconds]
neoncontrails has joined #lisp
damke has joined #lisp
sjl__ has joined #lisp
damke_ has quit [Ping timeout: 240 seconds]
sjl__ has quit [Ping timeout: 276 seconds]
k-stz has left #lisp ["ERC (IRC client for Emacs 25.3.1)"]
orivej has joined #lisp
pmc_ has quit [Quit: Leaving]
aindilis has quit [Remote host closed the connection]
Arcaelyx_ has joined #lisp
Arcaelyx has quit [Ping timeout: 276 seconds]
dwts has joined #lisp
Tordek has joined #lisp
fikka has joined #lisp
fikka has quit [Ping timeout: 240 seconds]
pjb has quit [Ping timeout: 264 seconds]
neoncontrails has quit [Remote host closed the connection]
longshi has joined #lisp
pjb has joined #lisp
klltkr has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
neoncontrails has joined #lisp
pjb has quit [Ping timeout: 276 seconds]
whoman has quit [Read error: Connection reset by peer]
hooman has quit [Read error: Connection reset by peer]
fortitude has quit [Quit: Leaving]
neoncontrails has quit [Remote host closed the connection]
lrvy has joined #lisp
neoncontrails has joined #lisp
xrash has joined #lisp
lrvy has quit [Quit: Textual IRC Client: www.textualapp.com]
mson has quit [Quit: Connection closed for inactivity]
vancan1ty has joined #lisp
bigos has quit [Remote host closed the connection]
mson has joined #lisp
shenghi has quit [Remote host closed the connection]
shenghi has joined #lisp
klltkr has joined #lisp
klltkr has quit [Client Quit]
EvW has joined #lisp
eSVG has quit [Ping timeout: 240 seconds]
d4ryus1 has joined #lisp
d4ryus has quit [Ping timeout: 240 seconds]
Reinhilde is now known as Ellenor
voidlily has quit [Remote host closed the connection]
yeticry has quit [Remote host closed the connection]
yeticry has joined #lisp
sjl__ has joined #lisp
smokeink has joined #lisp
voidlily has joined #lisp
sjl__ has quit [Ping timeout: 276 seconds]
Tobbi has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Jesin has joined #lisp
EvW has quit [Ping timeout: 250 seconds]
vancan1ty has quit [Ping timeout: 255 seconds]
igemnace has joined #lisp
neoncontrails has quit [Remote host closed the connection]
pierpa has quit [Quit: Page closed]
vancan1ty has joined #lisp
longshi has quit [Ping timeout: 248 seconds]
fikka has joined #lisp
SaganMan has joined #lisp
marusich has joined #lisp
fikka has quit [Ping timeout: 248 seconds]
dieggsy has quit [Quit: ERC (IRC client for Emacs 27.0.50)]
neoncontrails has joined #lisp
quazimodo has joined #lisp
tonton has quit [Ping timeout: 248 seconds]
tonton has joined #lisp
quazimodo has quit [Read error: Connection reset by peer]
nowolfer has quit [Quit: leaving]
eSVG has joined #lisp
dieggsy has joined #lisp
dddddd has quit [Remote host closed the connection]
kobain has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/]
vancan1ty has quit [Ping timeout: 250 seconds]
python476 has quit [Ping timeout: 248 seconds]
damke has quit [Ping timeout: 240 seconds]
damke has joined #lisp
les has quit [Ping timeout: 240 seconds]
les has joined #lisp
dieggsy has quit [Remote host closed the connection]
neoncontrails has quit [Remote host closed the connection]
dieggsy has joined #lisp
hexfive has joined #lisp
dieggsy has quit [Client Quit]
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
hexfive has quit [Quit: WeeChat 1.9.1]
sjl__ has joined #lisp
neoncontrails has joined #lisp
sjl__ has quit [Ping timeout: 255 seconds]
asarch has joined #lisp
schoppenhauer has quit [Ping timeout: 240 seconds]
schoppenhauer has joined #lisp
Bike has quit [Quit: Lost terminal]
teddy_error has joined #lisp
neoncontrails has quit [Remote host closed the connection]
asarch has quit [Quit: Leaving]
turkja has quit [Ping timeout: 248 seconds]
fikka has joined #lisp
Ellenor is now known as Reinhilde
fikka has quit [Ping timeout: 240 seconds]
zaquest has quit [Quit: Leaving]
aeth has quit [Ping timeout: 248 seconds]
aeth has joined #lisp
<beach> Good morning everyone!
<basket> Good morning, beach
<Josh_2> Morning
sjl has quit [Ping timeout: 268 seconds]
sjl has joined #lisp
philosaur has joined #lisp
smokeink has quit [Remote host closed the connection]
shka has joined #lisp
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
vlatkoB has joined #lisp
milanj has quit [Quit: This computer has gone to sleep]
voidlily has quit [Remote host closed the connection]
yurinew has joined #lisp
voidlily has joined #lisp
LocaMocha has joined #lisp
BitPuffin|osx has joined #lisp
jameser has quit [Ping timeout: 248 seconds]
jameser has joined #lisp
Karl_Dscc has joined #lisp
oleo has quit [Quit: Leaving]
turkja has joined #lisp
zmt00 has quit [Quit: Leaving]
Reinhilde has quit [Quit: ... Sometimes, you just don't know if life is even a thing.]
flamebeard has joined #lisp
smokeink has joined #lisp
mson has quit [Quit: Connection closed for inactivity]
jfb4 has quit [Ping timeout: 240 seconds]
raphaelss has quit [Remote host closed the connection]
Ellenor has joined #lisp
jfb4 has joined #lisp
fikka has joined #lisp
yurinew has quit [Ping timeout: 248 seconds]
dec0n has joined #lisp
fikka has quit [Ping timeout: 248 seconds]
ksool has quit [Ping timeout: 240 seconds]
Karl_Dscc has quit [Remote host closed the connection]
scymtym has quit [Ping timeout: 240 seconds]
teddy_error has quit [Changing host]
teddy_error has joined #lisp
teddy_error has quit [Quit: Peace ☮︎]
teddy_error has joined #lisp
<drmeister> How do lisp implementations save images of themselves to files?
<drmeister> Clasp writes out code and data for each top level form and then plays them back at load time. I’m looking for something better that doesn’t require support from the gc
BigSafari has joined #lisp
jameser_ has joined #lisp
<drmeister> I think of it like a painting. Clasp saves every brush stroke even the ones that are covered up by later stokes. Then it replays them when it loads.
<Zhivago> I think that is not sufficient to save the image of a running machine.
<Zhivago> Particularly where that machine has read from a file or opened a socket or whatever.
<drmeister> I can’t save the image of a running machine because I don’t have the support of the gc.
<Zhivago> Are you limiting it to the case of a machine which has just loaded stuff before running stuff?
jameser has quit [Ping timeout: 240 seconds]
<drmeister> I’m not sure what the trade offs are. I would imagine starting up a single thread and opening files at startup.
<Zhivago> (vaguely equivalent to C/C++ linkage)
<Zhivago> Or maybe, rather -- what problem do you intend to solve with saving an image?
<drmeister> Faster startup and solving painful bootstrapping circularity issues.
<Zhivago> Sounds like the problem of linkage, then?
<drmeister> A needs B and B needs A transitively.
<Zhivago> In which case, perhaps you can turn it into load-forms for each symbol?
mishoo__ has joined #lisp
<drmeister> I’ve been thinking that I have a symbol table and a bunch of code and classes, load time values etc. if I inventory them and write code to save and restore them - would that do the job
<Zhivago> Sounds reasonable. If you evaluate the symbols in those forms before saving you may avoid circularity issues.
<Zhivago> Although that would destroy identity in some cases, so never mind.
<drmeister> Could you elaborate?
<Zhivago> (defvar *a* (cons 1 2)) (defvar *b* *a*)
<drmeister> Destroying identity part
<Zhivago> We would expect true (EQL *a* *b*), but if *b* were restored by generating code which produced a value equivalent to that of *a*, then (EQL *a* *b*) would become false.
<drmeister> I see - it would restart with two separate conces if I did it naively.
jameser_ has quit [Read error: Connection reset by peer]
<Zhivago> And then could add (setf *a* *b*) after that to show that if you fix that problem you re-introduce the order of effects issue.
<Zhivago> But you could be a little more clever and have the sharing of sub-structure preserved by the regeneration code.
<drmeister> What about having the gc compact all live objects, write them out, and then reload and relocate them.
jameser has joined #lisp
sjl__ has joined #lisp
beach` has joined #lisp
<drmeister> I’d like to do that but I have to get hold of the raven brook folks to get some library support
Josh_2 has quit [Remote host closed the connection]
<Zhivago> Do you really need the GC for that?
<Zhivago> The only case I can think of would be where you have running threads or values hidden in closures.
<drmeister> I’m not sure. It’s easier if things aren’t moving around
<Zhivago> And since you control the closure representation, I think you can solve the latter.
<Zhivago> I'd think of the requirement that there be no running threads at the point of save-image.
<drmeister> Values hidden in closures?
sjl__ has quit [Ping timeout: 248 seconds]
beach has quit [Ping timeout: 264 seconds]
<drmeister> Clasp has special issues. It represents objects using 450 c++ classes. They have all sorts of data hidden in them.
<drmeister> Yeah - no running threads.
<Zhivago> (defvar *a* (let ((b 3)) (lambda () b)))
<drmeister> They have vtable pointers ugh
<Zhivago> There's no portable way to find that 3 given *a*, but since you're part of the implementation you don't need a portable way to do it.
pjb has joined #lisp
<drmeister> Sure - closures
<drmeister> Right
<Zhivago> I'm gradually coming to the conclusion that closures of indefinite extent are a bad idea.
Amplituhedron has joined #lisp
beach` is now known as beach
svetlyak40wt has joined #lisp
fikka has joined #lisp
jameser has quit [Read error: Connection reset by peer]
jameser has joined #lisp
mathi_aihtam has quit [Quit: mathi_aihtam]
smokeink has quit [Ping timeout: 248 seconds]
smokeink has joined #lisp
knobo has joined #lisp
juki has joined #lisp
murii_ has joined #lisp
shka has quit [Ping timeout: 260 seconds]
varjag has joined #lisp
norserob has quit [Ping timeout: 250 seconds]
Cymew has joined #lisp
vydd has joined #lisp
vydd has quit [Changing host]
vydd has joined #lisp
_cosmonaut_ has joined #lisp
juki has quit [Quit: ERC (IRC client for Emacs 25.3.1)]
raphaelss has joined #lisp
svetlyak40wt has quit [Read error: Connection reset by peer]
EvW1 has joined #lisp
scymtym has joined #lisp
sjl__ has joined #lisp
sjl__ has quit [Ping timeout: 276 seconds]
svetlyak40wt has joined #lisp
shifty has quit [Ping timeout: 240 seconds]
araujo has quit [Quit: Leaving]
marvin2 has joined #lisp
marvin2 has left #lisp [#lisp]
milanj has joined #lisp
zooey has quit [Remote host closed the connection]
zooey has joined #lisp
<dmiles> oh heh you gave me a hint to fix how to make #'eq work in porlog
<dmiles> so instead of "is_eq(X,Y):- X==Y." a structural sameness
<dmiles> its: is_eq(X,Y):- X==Y , (\+ compound(X)-> true ; \+ \+ ((gensym(cookie,Cook),setarg(1,X,Cook),X==Y))).
<Zhivago> Just remember that EQ can always be implemented as EQL.
<dmiles> its *allowed* but not typical?
<Zhivago> Any deviation from EQL should be for optimization purposes.
<Zhivago> So if you're making EQ more expensive than EQL, just have them share the same implementation.
BigSafari has quit [Quit: Textual IRC Client: www.textualapp.com]
vydd has quit [Remote host closed the connection]
<dmiles> ahah, good ot know
<Zhivago> You might consider something like is_eq(X, Y) :- object_identity(X) == object_identity(Y).
<dmiles> of for 'objects' i use (objpointer 1111111111) == (objpointer 2222222) but for conses it walks over them
<dmiles> the default fast prolgo comnparison operator that is
<Zhivago> Well, providing symbols are objects, that's what EQ should be testing.
<dmiles> two synonym streams or two structs #'eq will fail
<Zhivago> It should, unless they are the same struct or stream.
<dmiles> symbols are interned objects so they end up with the same pointers (so good for me so far)
<Zhivago> Then objpointer should be correct for EQ.
<dmiles> what i am worried that two differnt vectors
<dmiles> with prolog's ==/2 come up the same
<Zhivago> Why doesn't objpointer work for that case?
<dmiles> when two differnt objects get instanced, they get a new address
<dmiles> (different addresses)
svetlyak40wt has quit [Read error: Connection reset by peer]
<dmiles> sec while i get an example
<Zhivago> Well, that's what we expect. Different objects should not be EQ.
<dmiles> (LIST (SETF my-point (make-point :x 3 :y 4 :z 12 ))(SETF my-point2 (make-point :x 3 :y 4 :z 12 ))) ==> (#<claz_u_point 10> #<claz_u_point 11> )
<dmiles> *nod* .. in that case they are pointered.. i was hoping to not globally allocate simple vecotrs
d4ryus1 is now known as d4ryus
<dmiles> (not give them a pointer address)
<dmiles> so.. i know the example i worried about..
alexmlw has joined #lisp
<dmiles> (eq #(1 2 ) #(1 2 ))
<dmiles> ==> T
<dmiles> but really that should be "ok" ?
<dmiles> if i globally allocate it returns NIL
<dmiles> (as they would become pointers)
<dmiles> in a way i sorta got for free that beloved identity ;/ (that not sure i really wanted :P)
<dmiles> (as the fast EQ)
<mrottenkolber> wat?
<mrottenkolber> (eq #(1 2 ) #(1 2 )) → NIL
<dmiles> i have a bug in my impl that made → T
<mrottenkolber> oh ok
<dmiles> i fixed the bug with horible slow code
knobo has quit [Ping timeout: 240 seconds]
<dmiles> but i could have fixed it by heaping everything
<dmiles> horrible slow code " is_eq(X,Y):- X==Y , (\+ compound(X)-> true ; \+ \+ ((gensym(cookie,Cook),setarg(1,X,Cook),X==Y)))." compare datastrcuure value.. if they are the same poke a hole in one and see if they are still the same
<dmiles> but at least i guess i have 2-3 different ideas to work arround.
<dmiles> i am asking if (eq #(1 2 ) #(1 2 )) → T melts the universe or not
<loke> dmiles: It does.
<loke> dmiles: It does, in the sense that a compliant CL implementation can return either NIL or T for that form.
jealousmonk has quit [Ping timeout: 260 seconds]
<dmiles> what about (eq (cons 1 2 ) (cons 1 2 )) → T ?
<loke> dmiles: No. That must return NIL
Amplituhedron has quit [Ping timeout: 240 seconds]
<dmiles> (eq (make-point :x 3 :y 4 :z 12 ) (make-point :x 3 :y 4 :z 12 )) → T ?
<loke> dmiles: That depends on what MAKE-POINT dfoes.
trosa-work has joined #lisp
<loke> If it's a resut of a DEFSTRUCT, then that comparison should return NIL
<dmiles> for standard-object its T or MIL ?
fikka has quit [Ping timeout: 248 seconds]
<dmiles> (erm DEFCLASS)
<loke> dmiles: No. EQ should return NIL if the objects are different. MAKE-WHATEVER creates a _new_ instance, so those two instances are distinctly different.
<dmiles> ok.. sorry if you impliscitly answered this already... (eq (list 1 2 ) (list 1 2 ))
<loke> dmiles: NIL
<loke> (let* ((x (list 1 2 3)) (y x)) (eq x xy)) ⇒ T
<loke> s/xy/y/
<dmiles> (let ((x (list 1 2 3))) (eq (subseq 2 x) (subseq 2 x))) ?
<dmiles> oops (swapped the args of subseq)
<dmiles> i guess that one is impl dependant?
<loke> dmiles: No. It's guaranteed to return NIL... The relevant