Unison <https://github.com/unisonweb/unison> (not to be confused with 
Unisom, which I sometimes take if sleep eludes me) is a rather interesting, 
currently-alpha, Haskell-like language. One of the more interesting bits 
for ATS3 seems to be their approach for how code is stored and transmitted:



> This dynamic transfer / deployment of arbitrary computations is possible 
> because definitions in Unison are identified by a cryptographic hash of 
> their content, *including the hashes of all dependencies* (the hash is 
> also "nameless" as it isn't affected by naming of variables). To transfer a 
> computation, we send it to the recipient, and the recipient checks to see 
> if the computation references any unknown hashes. Any unknown hashes are 
> synced to the recipient before the transfer completes and the computation 
> proceeds.


So textual references (names) are just aliased to, I suppose, the actual 
semantic meaning of the underlying code, and are stored separately:

To make this happen, Unison just changed the name associated with the hash 
> of foldl *in one place*. The view command just looks up the names for the 
> hashes on the fly, right when it’s printing out the code.
> This is important: Unison isn’t doing a bunch of text mutation on your 
> behalf, updating possibly thousands of files, generating a huge textual 
> diff, and also breaking a bunch of downstream library users who are still 
> expecting that definition to be called by the old name. That would be 
> crazy, right?
> So rename and move things around as much as you want. Don’t worry about 
> picking a perfect name the first time. Give the same definition multiple 
> names if you want. It’s all good!
> ☝️ Using alias.term instead of move.term introduces a new name for a 
> definition without removing the old name(s).
>  


I think there was some discussion on the list previously about doing ATS3 
in a non-textual fashion, but I couldn't quickly find the reference. 

-- 
You received this message because you are subscribed to the Google Groups 
"ats-lang-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ats-lang-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ats-lang-users/5aebc1e2-a178-4790-ab1e-868a79b11a8b%40googlegroups.com.

Reply via email to