These are chat archives for unisonweb/unison

2nd
Jun 2015
Paul Chiusano
@pchiusano
Jun 02 2015 18:02
new post on some design work I've been doing: http://unisonweb.org/2015-06-02/distributed-evaluation.html
Ilan Godik
@NightRa
Jun 02 2015 18:29
@pchiusano Sounds great as always!
Paul Chiusano
@pchiusano
Jun 02 2015 18:32
ha, okay, thanks :)
Vladislav Zavialov
@int-index
Jun 02 2015 18:34

astromically

typo

Also, what are you planning to do with collisions?
Vladislav Zavialov
@int-index
Jun 02 2015 18:42

I’m not the first person to observe that it’s rather unfortunate that for one monad (the Identity monad), we get very nice syntax, whereas if we select a different monad (say Remote), we pay a heavier syntactic burden.

I always thought that the conventional syntax can be generalized to any cartesian-closed category, not to any monad.

Paul Chiusano
@pchiusano
Jun 02 2015 19:37
@int-index fixed
@int-index conventional syntax, you mean ordinary function application syntax, let bindings, etc
?
Vladislav Zavialov
@int-index
Jun 02 2015 19:39
@pchiusano Lambdas and function applications
And let bindings as a syntactic sugar for lambdas too.
Because let a = b in x is simply (\a -> x) b, modulo laziness caveats
Paul Chiusano
@pchiusano
Jun 02 2015 19:42
i don't really have enough knowledge of CCCs to comment, but I don't know of any actual language that has tried to do that, other than conal's work on compiling to hardware, which tried going through CCCs
also, what about let rec, gadts, etc...
Vladislav Zavialov
@int-index
Jun 02 2015 19:45
@pchiusano Well, those can't be generalized to any CCC. Nor to any monad, to be fair — for let rec you'd need MonadFix, for example.
Paul Chiusano
@pchiusano
Jun 02 2015 19:47
yeah
not sure about hash collisions
Paul Chiusano
@pchiusano
Jun 02 2015 19:55
if you create a definition whose hash collides with something else in the store, that can be detected and dealt with
the more worrisome case is when doing remote evaluation, the remote node tells you it has a hash, but it actually has a different value (with a colliding hash), and it runs your program referencing the wrong term, and crashes or worse silently returns wrong results
OTOH, there's a greater chance of a gamma ray flipping a bit in memory and having the same effect, and no one seems to worry about that... :)
Vladislav Zavialov
@int-index
Jun 02 2015 20:17
@pchiusano if the chance is THAT low, I don't think it's a reason to worry.
Paul Chiusano
@pchiusano
Jun 02 2015 20:18
well, it is nice to have some response since people often ask about it :)
but yeah, it is similar to git, where remote nodes never override the value associated with a hash you already have locally
so, no one can use a hash collision for attack purposes, but when evaluating expressions remotely, a hash collision could cause spurious crashes of your program