287 karma · joined July 7, 2009
Clojure also recognizes the connection between ownership and mutability in its "transients": https://clojure.org/reference/transients ... compile time borrow checking extends that idea to an entire language.
The same can be said of any variable in Rust that is passed to a function via immutable reference. Borrow checking guarantees (at compile time, with no runtime overhead) that even if a user passes something that supports mutation (such as a BTree or an array) to a function, that that function may not mutate unless it has permission to.
This means that if you have an immutable reference to something, it can be treated as a value. For example: a Vec or BTreeMap (structures that supports mutation) can safely and easily be used as Map keys in Rust, because borrow checking guarantees that once the Map has taken ownership of the structure, it "is a value": ie, is immutable.
But there have been very important developments in programming languages since this post/page was written: notably, the introduction of "borrow checking" (exemplified by Rust's implementation). Borrow checking has a very significant positive effect on the sustainability of imperative code, which makes the claim that "imperative programming is founded on an unsustainable premise" feel dated.
It is worth taking the time to understand what borrow checking enables. For example: borrow checking allows even mutable datastructures to be treated as values with structural equality. It does this by guaranteeing that unless you have exclusive access to something, it may not be mutated.
A good explanation of the benefits of ownership and borrow checking: http://squidarth.com/rc/rust/2018/05/31/rust-borrowing-and-o...
Composition of actors would allow for "wrapping" the actions of one actor in another and an implementation of RPC within your service itself (separate actors for both requests and responses), but that's not generally a thing you would do directly. Why? Because it's nontrivial, and you'd likely want a framework like theirs to orchestrate it.
http://bitcoinist.net/block-size-debate-takes-turn-f2pool-re...
https://github.com/twitter/util/blob/master/util-core/src/ma...
git log -- my-teams-subdirectoryThe supercharger in Folsom enables Tahoe, and was one of the first to go in. But because of the cold and the elevation change, you have to stay there for more than 2 nights to make that one practical (or stay at the Ritz, which still seems to be the only hotel with >110v charging.)
The Tesla Superchargers cost about $20k each to install, which is low enough that they didn't need anyone else's cooperation to cover the US.
It is not in the credit card companies best interest to even acknowledge this type of theft, because they have no way except machine learning to protect you from it.
On the other hand, it IS useful for them to acknowledge huge security breaches at corporations, because they can point to them and say: and look at how we protected you! (after their dumb security system endangered you in the first place)
http://grepcode.com/file/repository.grepcode.com/java/root/j...
EDIT: or micropayments: https://en.bitcoin.it/wiki/Contracts#Example_7:_Rapidly-adju...
In particular, how old was the version of git they were testing with? Were they using SSDs?
In the end, they only directly added support for 1) type-safe macros, aka "black-box" macros 2) ...invoked transparently as methods, aka "def macros"
They identified "white-box" (non-type safe) macros and quasiquoting as distinct from black-box macros, because the type signature of a black-box macro tells you approximately what it will do, meaning that you can treat it as a "black box". But additionally, in order to write a meaningful type signature, the input to a black-box macro must _already_ be valid scala code! This means that the addition of macros cannot actually result in new scala syntax [d].
[a] https://news.ycombinator.com/item?id=3709193
[b] http://www.infoq.com/presentations/scala-macros
[c] still hoping the existence of scala macros leads to the deprecation of a bunch of other features though
[d] see the explanation starting around 33m30s in [b]