oldskirt has quit [Read error: Connection reset by peer]
oldskirt has joined #elliottcable
<gkatsev>
it's going to be hot in florida
<gkatsev>
guess I'll be packing shorts and tshirts
sharkbot has joined #elliottcable
<glowcoil>
ok ELLIOTTCABLE cloudhead here is a language idea
<glowcoil>
i guess this might be hands or something
<glowcoil>
one cool thing you can do:
<glowcoil>
f( g() )
<glowcoil>
g returns 10 times, now f is called 10 times
<glowcoil>
but
<glowcoil>
:
<glowcoil>
a = { g() {
<glowcoil>
whoops
<glowcoil>
a = { g() }
<glowcoil>
now a refers to a set
<glowcoil>
of all the results of g
<glowcoil>
that is populated over time
<glowcoil>
whereas
<glowcoil>
a = g()
<glowcoil>
a always refers to the latest result of g
<glowcoil>
and then some good comprehensions like
<glowcoil>
{ x for x in g() if x > 3 }
<glowcoil>
but perhaps different syntax
eligrey has quit [Quit: Leaving]
oldskirt has quit [Quit: gone]
oldskirt has joined #elliottcable
oldskirt has quit [Changing host]
oldskirt has joined #elliottcable
<ELLIOTTCABLE>
glowcoil: that leaves you with no way to assign the 10-sequential-results of g() to a variable.
<ELLIOTTCABLE>
I know you hated that aspect of Paws, but I'm still convinced it's the least jarring, and single-most-useful, abstraction.
<ELLIOTTCABLE>
Executing the rest of <code block>, with `a` *appearing* to be a single variable at a single point in time, *multiple times* with each value for a, without having to wrap it in a further function or add a callback or further manipulate the code itself to do so,
<ELLIOTTCABLE>
is the single most common usage scenario.
<ELLIOTTCABLE>
that said, paws not having *any other* approaches available, without some questionable and possibly-impossible abstractions written for you, was a huge failing.
<ELLIOTTCABLE>
so: I'd like to see something halfway between the two. Retaining the Paws multiple-return == multiple-fork abstraction as the primary one, but with builtin tooling for multiple-return == multiple-pass *as well*.
<ELLIOTTCABLE>
(i.e. lisp-style *sited* multi-values, with functions capable of taking multiple values being able to take a multi-return function as an argument, directly.)
<ELLIOTTCABLE>
and of course wrapping multiple returns into a data-structure (say an array-ish type, or some continuously-growing ‘reactive’ approximation thereof) is a given. that doesn't really need much support at the language-level, would definitely be a syntactic abstraction over a semantic library-abstratction
<ELLIOTTCABLE>
just thoughts.
<ELLIOTTCABLE>
give zero fucks about language design right now.
<ELLIOTTCABLE>
devyn: just, met a girl, she's a huge troll.
<oldskirt>
so basically lua's `...`? function foo() return 1,2,3 end a,b,c=1,2,3 can be put into a table a={...} and passed as remaining parameters print(a, b, foo())
<oldskirt>
and "multiple return" I would understand as "yield" from generators
gozala has quit [Quit: Connection closed for inactivity]
<devyn>
hm interesting
<devyn>
also
<devyn>
you guys
<devyn>
I might be crazy
<devyn>
but
<devyn>
I just bought a Raspberry Pi with the intention of doing bare metal programming on it
<devyn>
because I found out that the firmware is actually really really well documented
<devyn>
and fairly sane to do anything
<devyn>
plus, ARM
<ELLIOTTCABLE>
oldskirt: neither sounds related.
<devyn>
oldskirt: "multiple return" as "yield" from generators is, actually, somewhat related
<devyn>
oldskirt: just think of continuations, and then Paws executions are just mutable coroutines-as-objects
<devyn>
basically
<oldskirt>
where does the mutability come in?
<devyn>
as in
<devyn>
instead of getting a new continuation when you call it
<devyn>
the continuation modifies itself
<ELLIOTTCABLE>
execution is what it sounds like.
<ELLIOTTCABLE>
Everybody, always, for four fucking years, has told me that my explanations of that make no sense
<oldskirt>
(sounds like lua's coroutines)
<devyn>
yes
<ELLIOTTCABLE>
and since literally day one, before I knew what CPS, or coroutines, or delimited continuations, or program-counters, were,
<devyn>
coroutines, however
<ELLIOTTCABLE>
I *never* understood how the fucking concept was confusing.
<ELLIOTTCABLE>
“A Function, is a first-class representation of a mathematical function, that you can put into a variable, so that you can send it messages / call methods on it.”
<ELLIOTTCABLE>
“An Execution, is a first-class representation of a *particular execution*, or run-through, of a block of code; that you can put into a variable, so you can send it messages / call methods on it.”
<ELLIOTTCABLE>
what's so hard about a thing named a fucking Execution that is a goddamned representation of the execution of some code. ಠ_ಠ
<ELLIOTTCABLE>
I think now that I'm pushing through the burn-out on the project, I'm letting out my passive-aggresive side :P
* ELLIOTTCABLE
toddles off back to his television
<devyn>
you see, ELLIOTTCABLE, that makes sense to me now but I don't know whether it would have if I didn't know what it was in the first place
<ELLIOTTCABLE>
yah that's my issue
<devyn>
think that explanation requires too much context
<devyn>
and "why?"
<devyn>
essentially
<ELLIOTTCABLE>
I just, can't fathom, how that's confusing
<ELLIOTTCABLE>
oh the “why” I can get
<ELLIOTTCABLE>
I can go *on* to explain how they're useful
<ELLIOTTCABLE>
but explaining first-class *functions* to a newcomer to programming is just as confusing
<devyn>
yep
<devyn>
I'm currently teaching JavaScript to a noob
<ELLIOTTCABLE>
“Wait, I have to store the *idea* of multiplication somewhere, and then give it a name!?”
<ELLIOTTCABLE>
yeah I love teaching JS so much.
<ELLIOTTCABLE>
NICOLE
<devyn>
I was teaching her about all the different values
<devyn>
and I had already told her about functions
<devyn>
having names and all
<devyn>
and she was fine with that
<devyn>
but then when I told her about functions as values
<devyn>
she was totally confused
<ELLIOTTCABLE>
her, as in, our Nicole? :D
<ELLIOTTCABLE>
or a different her?
<devyn>
no, I don't know who that is
<ELLIOTTCABLE>
oh poop k
<ELLIOTTCABLE>
@nicoou
<devyn>
different her. I may get her in here some day
<devyn>
if she improves
<devyn>
heh
* ELLIOTTCABLE
sighs
<ELLIOTTCABLE>
grumpymode.
<ELLIOTTCABLE>
good night, though, assembling IKEA furniture at a friend's new place
<devyn>
it's currently 2:30am
<devyn>
and I have work at 9
<devyn>
why am I up
<ELLIOTTCABLE>
half past four /=
<devyn>
wow it's raining very hard now
<devyn>
huh
<devyn>
ok
<devyn>
probs gon gone nao
<devyn>
bai
<ELLIOTTCABLE>
I got my new chair
<ELLIOTTCABLE>
exciting
<devyn>
oh
<devyn>
cool
<devyn>
new chair?
<ELLIOTTCABLE>
yeah; I've needed a chair for when my legs get tired, for a while
<devyn>
ELLIOTTCABLE: dude you need to put up a web IRC chat client tuned to this channel at http://oi.ell.io
<ELLIOTTCABLE>
But yes, that's how I feel about it :P
<devyn>
oh and
<devyn>
nice chair
<devyn>
heh
<devyn>
looks like it has a lot of support
<ELLIOTTCABLE>
Yes. This chair has sex with your back.
<ELLIOTTCABLE>
My back, it has been literally wined, dined, foreplayed, and then visiciously, wonderfully *fucked*.
Willox_ has quit [Ping timeout: 245 seconds]
Willox_ has joined #elliottcable
prophile has joined #elliottcable
prophile has quit [Quit: The Game]
<cloudhead>
lol @ real world haskell book
<purr>
lol
<cloudhead>
:D
yorick has joined #elliottcable
Sorella has joined #elliottcable
Sorella has quit [Changing host]
Sorella has joined #elliottcable
Sgeo has quit [Read error: Connection reset by peer]
PragCypher has joined #elliottcable
PragCypher has quit [Remote host closed the connection]
PragCypher has joined #elliottcable
Rusky has joined #elliottcable
Rusky has quit [Ping timeout: 276 seconds]
oldskirt_ has joined #elliottcable
oldskirt_ has joined #elliottcable
oldskirt_ has quit [Changing host]
oldskirt has quit [Ping timeout: 240 seconds]
prophile has joined #elliottcable
alexgordon has joined #elliottcable
PragCypher has quit [Quit: Leaving]
gozala has joined #elliottcable
oldskirt_ is now known as oldskirt
eligrey has joined #elliottcable
oldskirt has quit [Read error: Connection reset by peer]
oldskirt has joined #elliottcable
oldskirt_ has joined #elliottcable
oldskirt_ has joined #elliottcable
oldskirt_ has quit [Changing host]
oldskirt has quit [Ping timeout: 258 seconds]
prophile has quit [Quit: The Game]
trolling has joined #elliottcable
<trolling>
I wish someone would just kill Rupert Murdoch
<trolling>
doesn't have to be anybody here, just somebody
<trolling>
it can't be that hard
trolling has quit [Quit: Lost terminal]
<glowcoil>
ELLIOTTCABLE: that's literally what a = g() would be
<glowcoil>
ELLIOTTCABLE: hands is just about looking at you defining a dependency graph and giving you tools to express different kinds of dependencies
<glowcoil>
ELLIOTTCABLE: starting from kind of a higher level so it's less of a tarpit