4 ms·
This document seems to be at a lower level. An actor model would be implemented in terms of these primitives. These primitives are available in many languages.
by cjfd 2y ago
This document seems to be at a lower level. An actor model would be implemented in terms of these primitives. These primitives are available in many languages.
Immutable is kind of irrelevant in a discussion of multi-threading because immutable data has no problems in this regard. Which, of course, in a way also makes it relevant because one prevents issues. Ultimately one cannot have just immutable data because the computer would not be allowed to do anything. This document would be about data that cannot be immutable.
But the complaint sounds a bit like an article about assembly language getting the complaint that it does not explain how to implement a word processor.
- adrianN 2y agoOf course you can have only immutable data, you just need suitable monads.
- hyperpape 2y agoThere's disagreement about what exactly makes you a systems programmer, but dealing with the reality that memory is finite is definitely a requirement. You need mutation or garbage collection (and systems programming is the kind of environment where that's not just "someone else's problem").
- kccqzy 2y agoPlenty of languages have immutable data without monads or even being statically typed. Clojure is a fine example. And there is also the somewhat popular https://immutable-js.com/ https://immutable-js.com/ that brings the benefits of immutable data to JavaScript.
- SideQuark 2y agoBy that argument, all programming is immutable, with monads only used to update the mutable parts. The point of this article is to detail needs for those monads to interact in a concurrent manner.
- rileymat2 2y ago> Immutable is kind of irrelevant in a discussion of multi-threading because immutable data has no problems in this regard. To push back on this, no data is completely immutable, it is mutable on initialization, treating it as immutable between threads is ok after this stage, but if you disregard issues with timing and mutation you will run into problems between threads on initialization.