this post was submitted on 17 Sep 2023
48 points (100.0% liked)
Programming
13386 readers
125 users here now
All things programming and coding related. Subcommunity of Technology.
This community's icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I have dozens of projects in varying levels of completion and maybe like 2 finished projects. Here's my list, steal to your liking because I come up with ideas I want to see in the world, and clearly I'm not a great medium for that:
d(0, 255) = 1
, and it still worked. Stochastic updates work, even in a distributed context, because it's a kind of "simulated annealing".And finally then there's my magnum opus, Espresso, my favorite project I keep coming back to time and time again and ~~bikeshedding~~ refining over many years. If anyone else takes it up I'd be ecstatic.
proto[...T] Super Sub(...args) { ... }
, egproto class Animal { ... }
andproto Animal Monkey { ... }
class
,enum
,union
,interface
,struct
, etc. Compare to [P0707];
is an optional operator to explicitly disambiguate their ending.after
operator,x() after y() == (var t = x(); y(); t)
- surprisingly useful for conciseness.[...for(var x in 10) x] == list(range(10))
proto class { +(rhs) { console.log("\{this} + \{rhs}"); } }
delegate()
method which define how to represent the variable on the stack. Untyped variables use an inferred type or an implicitany
, which wraps a dynamic object. This lets you create objects likeint32
while still using the prototype semantics.unsafe
compilation distinction to avoid catastrophic vulnerabilities.try!
semantics, exceptions are actually wrapped in a returnedResult[T, E]
type:try
is an operator which unwraps the result and returns if it's an error. Thus you getvar value = try can_fail();
. Using type object operator overloading, theResult
type doesn't need to be explicitly annotated becauseResult[T, E] == T | Result[T, E] == T | fail E
.fail
keyword instead ofthrow
/raise
.I could go on for hours with all of the stuff I've thought of for this language. If you want to know more, the README.md and ideas.md are usually the most authoritative, and specification.md is a very formal description of a subset of the stuff that is absolutely 100% decided (mostly syntax). I've written turing complete subsets of it before. First usable implementation to arrive by sometime in 2200 lmao. 🫠 I can also unpack the other projects if you want to know more.
Holy moley, you keep yourself busy. :D