These are chat archives for unisonweb/unison

3rd
Dec 2016
Paul Chiusano
@pchiusano
Dec 03 2016 01:53
this article is great: VHS vs Betamax, the real story
Paul Chiusano
@pchiusano
Dec 03 2016 03:04
I was trying to think about the Remote monad, if it would make any sense in a language with side effects...
Tim McIver
@tmciver
Dec 03 2016 03:06
I kinda thought Remote was like IO, no?
Paul Chiusano
@pchiusano
Dec 03 2016 03:07
do Remote
  x := f y
  Remote.transfer node1
  x++ -- what could this mean?
I mean, I’m trying to convince myself that Unison being functional is more than just a “stylistic” choice, it actually makes things tractable
Tim McIver
@tmciver
Dec 03 2016 03:08
Is ++ the increment operator? :)
Paul Chiusano
@pchiusano
Dec 03 2016 03:08
yeah, like C++
Tim McIver
@tmciver
Dec 03 2016 03:09
But surely x is not mutated in place . . .
Paul Chiusano
@pchiusano
Dec 03 2016 03:09
yeah, this is a thought experiment
a hypothetical Unison that allowed untracked mutation willy nilly! (don’t worry, language won’t ever be like that)
Tim McIver
@tmciver
Dec 03 2016 03:10
What's the issue here? So, the computation is transferred to node1 and it needs to get the value of x from the transferring node?
Paul Chiusano
@pchiusano
Dec 03 2016 03:12
that x++ would have to go back to the originating node… but by that point, where is x?
Tim McIver
@tmciver
Dec 03 2016 03:13
Wait, is it node1 performing x++?
Paul Chiusano
@pchiusano
Dec 03 2016 03:13
well, yes, but it can’t do that because it doesn’t have the x reference
it could have a copy of x, but that’s not the same
Tim McIver
@tmciver
Dec 03 2016 03:16
Hmm, I'm not sure I understand the problem. Seems to me, that node1 would get the value of x from the transferring node, increment it and then . . . presumably that value gets sent back to the transferring node.
Paul Chiusano
@pchiusano
Dec 03 2016 03:16
the originating node would need to keep the reference to x around, even after transfering the computation
also unclear when we can destroy that reference… like when do we know that no remote computation will ever try to edit the reference?
@tmciver I was thinking that incrementing a copy of x probably isn’t what you want, but maybe that is okay if you asynchronously send the same operation back to the originating node
either way it seems like it opens a can of worms
Tim McIver
@tmciver
Dec 03 2016 03:19
Is x some kind of mutable cell?
Paul Chiusano
@pchiusano
Dec 03 2016 03:20
let’s say yes
Tim McIver
@tmciver
Dec 03 2016 03:20
Yeah, then I can see the problem.
Perhaps the system could be aware of such mutable cells and the calculating node would know to somehow update its value. Don't know, just thinking out loud.
Tim McIver
@tmciver
Dec 03 2016 03:25
Speaking of effects: know any good references about effect typing (besides the wikipedia page)?
I can start with the references in the wikipedia page . . .
Paul Chiusano
@pchiusano
Dec 03 2016 03:29
there’s also Eff http://www.eff-lang.org/ but I don’t think they ever worked out a type system for the language
for the effects that is
Tim McIver
@tmciver
Dec 03 2016 04:05
Cool, thanks. I started looking at the Frank paper but haven't gotten far. I'll check out the other links.
Paul Chiusano
@pchiusano
Dec 03 2016 04:05
yeah, I’m not sure how great any of those are as an intro
probably the Koka language is better than others
Paul Chiusano
@pchiusano
Dec 03 2016 04:25
I’m trying to trace the origin of the idea of identifying things by hashes, including hashes of all dependencies
where did that first appear?
maybe merkle trees
I feel like Nix is probably the first system I am aware of that used this idea for something useful related to programming languages
but there have to be other instances before Nix
Tim McIver
@tmciver
Dec 03 2016 19:22
I assume you're excluding git because it's not directly related to programming languages.
Chris Gibbs
@huufabrosmeli
Dec 03 2016 22:30
@tmciver bang up to date reference for Frank: https://personal.cis.strath.ac.uk/conor.mcbride/pub/frankly.pdf