<micahjohnston>
whitequark: I AM CAPABLE OF DISCUSSING PAWS
<whitequark>
micahjohnston: EXPLAIN PAWS TO ME FROM THE GROUND UP THEN
<micahjohnston>
ALL RIGHT I WILL WHILE I HAVE TIME
<micahjohnston>
whitequark: what is your background
<whitequark>
i implemented ruby and write compilers for a living
<micahjohnston>
oh yeah I remember
<micahjohnston>
you're a genius
<micahjohnston>
ok so I will have to teach upwards to you :p
<whitequark>
I'm not lol
<micahjohnston>
so paws is basically about continuations
<whitequark>
but you can expect me to know shit about continuations
<whitequark>
yeah...
<micahjohnston>
yeah
<micahjohnston>
so
<micahjohnston>
node.js looks ugly because you write everything in explicit cps
<micahjohnston>
paws does the cps transform for you yknow
<micahjohnston>
and every call is kinda like call-cc
<micahjohnston>
and it's also like Lua in its object system/Io in its syntax
<micahjohnston>
though there are cool things about both that are unique to paws
<micahjohnston>
so for instance here is the example we always use
<micahjohnston>
(elliott makes fun of me for using it so much)
<micahjohnston>
print(a_list each)
<micahjohnston>
print only ever sees strings
<micahjohnston>
so basically it's asynchronous everywherererrerreerrere
<micahjohnston>
we haven't hammered out the high-level details of the libraries that will be provided for control flow etc. so
<micahjohnston>
that's up in the air
<whitequark>
one thing
<whitequark>
we *really* need to use delimited continuations
<whitequark>
(but first figure out how exactly do they work)
<micahjohnston>
yeah
<whitequark>
because call/cc is shit
<micahjohnston>
well yeah
<micahjohnston>
that's a place where i disagree with elliott that paws is already designed
<micahjohnston>
and where i think we should do a lot more discussing
<micahjohnston>
and he just wants to get it working with a call/cc thing
<micahjohnston>
but i want the equivalent of delimited i guess
<micahjohnston>
anyway the specifications of the semantics are low-level enough that you could make the higher-level language look delimited on top of them
<micahjohnston>
which I think is kinda silly because we're basically just pushing that design discussion to the future
<micahjohnston>
buttttt
<whitequark>
writing a compiler with nondelimited continuation is pretty much impossible
<whitequark>
an optimizing one
<micahjohnston>
yeah
<micahjohnston>
i can see that
<micahjohnston>
elliott's vision for paws is pretty uncompilable anyway :p
<micahjohnston>
i disagree with him a lot
<micahjohnston>
but anyway every call is a call-with-continuation
<micahjohnston>
so like, returning is when you get called back
<micahjohnston>
and you can get called back multiple times, as in print(a_list each)
<micahjohnston>
and you can also call asynchronously in which case you spin off something without being suspended
<micahjohnston>
iow delimiting the continuation, right?
<whitequark>
mmm
<whitequark>
not sure
<micahjohnston>
and actually i wish elliott hadn't insisted on using his own terminology and we'd discussed this in terms of continuations
<micahjohnston>
because an early fundamental thing I was uneasy about can be summed up exactly by non-delimited vs delimited continuations