5 ms·
They absolutely do, with their own terms. Isn't an S-expression just a list? Isn't a method just a "member function", which is really just a function, which i
by pcmonk 9y ago
They absolutely do, with their own terms. Isn't an S-expression just a list? Isn't a method just a "member function", which is really just a function, which is really just a subroutine? Every language comes up with its own terms, especially for things that are a little different from previous work.
Urbit isn't trying to solve many new problems; it's trying to solve old problems in different ways. They just want to be able to talk about the constructs in their solutions.
- tptacek 9y agoRight, I get that. So I guess my question is: in what ways justifying new terminology are the approaches taken by Urbit different? And whether or not they're different enough from prior art to merit obscure new terms, are those differences worthwhile, or are they different for the sake of being different? Because not all of the last 30 odd years of systems and programming research was pointless.
- pcmonk 9y ago> not all of the last 30 odd years of systems and programming research was pointless. Indeed, which is why it's a shame our primary server OSes (Unix-likes) can't incorporate them. Urbit can. As for what are the approaches different, there have been many words spilled over that, but here's a few examples to wit, most of which exist in one or two other systems, but aren't widely used: - All events are transactions, down to the VM level. There's no concept of an event that left garbage around because power was cut or the machine was rebooted. You can always crash an event, making it as if it never happened. - Single-level store. Never worry about ORM because your in-memory state never goes away (because all events are transactions). - Persistent connections with exactly-once messaging. Disconnection is just seen as long latency. - Strict, purely functional language with a strong type system but no Hindley-Milner (so you don't need category theory). - Sane indentation for a functional language, known as "backstep". - The file system is a typed revision control system, which allows intelligent diffs on types other than plain text. Most, if not all, of these, have been described in research, but nobody's bothered to build a system with them.
- Munksgaard 9y agoI'm curious: What's the advantage of ditching Hindley-Milner?
- Chattered 9y agoI want to give urbit a try. I have a planet, but last time I fired it up the latency was so bad that I wasn't having fun. I'll try again sometime. I can even get behind runes, and I set up abbreviations in Emacs to learn their names. And generally, I like the philosophy of language where short, one syllable, old/middle English words are used in place of the less familiar Latin/Greek derived words. I don't have a problem with revising our existing vocabulary in this way. But the attitude to type theory strikes me as anti intellectual, precisely because we get nonsense claims about Hindley Milner requiring category theory. This sort of misinformation does no good for anyone.
- vmchale 9y agoNone whatsoever. Hindley-Milner is in fact used widely in language design because of its relatively good error messages (as well as ease of implementation). Also it really doesn't have much to do with category theory.
- mrkgnao 9y agoRust uses Hindley-Milner type inference. OCaml uses Hindley-Milner. Swift apparently uses a variant of the system with more features. None of these make use of monads or anything rooted in category theory. https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_system https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_sy... HM is a type system that also gives you an algorithm to infer types without having to do the "List<Integer> foo = new ArrayList<Integer>()" dance from languages without type inference. That's it. It has nothing to do with category theory.
- steveklabnik 9y ago(Rust doesn't use Hindley-Milner, though the plan is to try to move closer to it in the future)