ALGOL 68 has the nice property that there are no variables/lvalues: There are names that are bound to constant values, and there are values that are addresses. "int x := 5" is shorthand for stack-allocating an int and binding x to its address (so the type of x is "ref int").
-
-
Yes, I think this is the way to go if you make reads explicit. https://en.wikipedia.org/wiki/BLISS is close. I'd kind of like to avoid overloading "a.x" if possible -- it has different meanings for pointers and values, though it should be guaranteed that "(a^).x = (a.x)^".
-
I suspect something like that is unavoidable, though, and I should accept that a struct specifies not only memory layout (field-offset map) but value-level meaning (which is also used for calling conventions etc.). The alternative is C-style "." vs. "->" separation, I guess.
- 7 more replies
New conversation -
-
-
I'm curious whether you wrote much code in this language. This approach is certainly conceptually cleaner than lvalues, but I can't tell whether the syntactic noise is worth it in practice (especially for C-style code with a lot of mutation -- it's easier to pull off in e.g. ML).
-
Not a huge amount. In my experience, it adds enough noise that it makes you really think about whether mutability is needed in each usage case.
- 1 more reply
New conversation -
-
-
The C is a language that I love, but I always recommend as much as possible to modify it (ASM) for our needs, have you read this book?
https://en.wikipedia.org/wiki/The_Art_of_Computer_Programming … , Totally recommended to improve our abstraction when programming 
Thanks. Twitter will use this to make your timeline better. UndoUndo
-
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.