It's one thing to read about them in books, but you learn so much nuance by actually stepping through the inherent problems and difficulties in actually making them work.
Modern tech is too advanced to meaningfully learn about it by tinkering with small toy projects. These "foundational technologies" are gigantic specializations that require an extraordinary investment of time to master.
Looking back now over the years, I wish I tinkered less and narrowed my focus more.
In any case, I doubt a run on sentence is “meaningless” but it is hard to parse.
Or Python, Go, or Typescript.
I recently sat down and put together the beginnings of a framework to play around with or use as a starting point.
is the evaluation model call-by-need (lazy, like Haskell) or call-by-value (strict, like most other languages)?
how is memory allocation handled? (I assume GC via the underlying JavaScript implementation)?
will it be open-sourced at some point?
a major benefit of immutable definitions is that they are always initialized; however, the type declaration format potentially opens things up to a use-before-def bug if the type declaration brings the variable name in scope. How is this handled in your implementation?
Good luck on the continued progress of your project; it can be deeply satisfying!...where is the source code?
austin-cheney•5mo ago
dist1ll•5mo ago
Personally, I think this argument only holds water for languages that are rooted in mathematics (e.g. Haskell, Lean, Rocq, F*, ...). If your computational model comes from a place of physical hardware, instructions, registers, memory etc. you're going to end up with something very different than an abstract machine based on lambda calculus. Both valid ways to design a PL.
zabzonk•5mo ago
nnnnico•5mo ago
grg0•5mo ago
-> for definition is just annoying. On every keyboard layout, it takes two strikes to type, possibly with shift involved.
moi2388•5mo ago
Then again I quite like rewriting languages like Mathematica and lean
amelius•5mo ago
austin-cheney•5mo ago
grg0•5mo ago
agalunar•5mo ago
(I find it baffling in the extreme that in many mainstream languages the convention is to write type annotations as “x: T”, both prima facie and because in those languages the notation then collides with field assignment!)
gucci-on-fleek•5mo ago
"let x = 1" has the same meaning in mathematics as well as JavaScript and Rust.
yawaramin•5mo ago
qayxc•5mo ago
jasperry•5mo ago
rurban•5mo ago
Instead of := you should use => for assignment.
bregma•5mo ago
rurban•5mo ago
AdieuToLogic•5mo ago
Historically, distinguishing an equality operator from an assignment one has existed for many decades. Whether using colon for the latter is "absolutely correct" is the subject of valid debate.
An equally compelling case could be made for any of the following assignment operators as well:
Etceterabluecalm•5mo ago
znkr•5mo ago
This is touching on a pet peeve of mine: Mathematics and programming are similar in many aspects, but this is not one of them. In mathematics = is not a comparison, but a statement.
More generally, mathematics is about tautologies, that is statements that are always true. In programming, a comparison is evaluated to either true or false.
That doesn’t mean that there’s no room for conditionals in mathematics (one example is piecewise function definitions). But it’s not the same. Heck, even the definition of “function” is different between mathematics and programming.
mastermage•5mo ago
ffsm8•5mo ago
mastermage•5mo ago
jasperry•5mo ago
austin-cheney•5mo ago
As a new language design feature procedures could be assigned to references for reuse in the same way as calling a function by name/variable.
jasperry•5mo ago
amelius•5mo ago
For example, in most languages you have a notation like f(g(h(x))) which calls the functions in the exact opposite order of reading which is unnecessarily confusing.
cb321•5mo ago
bregma•5mo ago
Nope, make it explicit. You're moving the value of an expression to a placeholder. The only sensible way to write that would be
Why, with such a simple and obvious English-like syntax even a common business-oriented person could use the language.