As a sucker :-P for actor based systems was immediately reminded of Pony (<a href="https://www.ponylang.io/discover/#what-is-pony" rel="nofollow">https://www.ponylang.io/discover/#what-is-pony</a>)
Crockford's RacketCon 2023 talk <a href="https://www.youtube.com/watch?v=vMDHpPN_p08" rel="nofollow">https://www.youtube.com/watch?v=vMDHpPN_p08</a> covers Misty (it's apparently specification-only so far) and is generally fun.<p>Added: couple of previous submissions with a handful of comments <a href="https://news.ycombinator.com/item?id=38680087">https://news.ycombinator.com/item?id=38680087</a> <a href="https://news.ycombinator.com/item?id=38114122">https://news.ycombinator.com/item?id=38114122</a>
It’s strange that the syntax is not afraid of using non-ASCII Unicode characters (e.g. « », ≤, ≈, ƒ) but then uses the ASCII digraphs /\ and \/ for logical AND and OR instead of ∧ and ∨.
After saying that it's a dynamic general-purpose, actor language, the introduction talks about spacing style, comment style, naming and purity.<p>That's very lackluster. Show me a Fizzbuzz or an advent of code. Tell me a story of why it exists.<p>Now the only discussion I can have is why are there no reserved words and can we call our functions and variables "set", "call" and "def" then?
Willing to at least look at it, given that it's Crockford.<p>On first glance, I like the patterns. It's long past time that regex got replaced with something that looks less like line noise from an old dialup modem.
My initial reactions:<p>The good:<p>- network-crossing actor model, but with private addresses and built in routing and security capabilities<p>- object component security<p>- null means null<p>- immutability<p>- AWK-like pattern DSL<p>- functino is a cool way to have your infix operators cake and eat it too as prefix functions<p>The bad:<p>- no type checking on variables, parameters, record fields, record shapes, actor messages, etc<p>- practically need to buy a new keyboard to type all the symbols like '≈', '≠', 'ƒ', etc<p>- null punning seems great until you're looking at a null three function calls later and have no idea where it came from<p>Unsure:<p>- No reserved names means it's very easy to accidentally overwrite a primordial with no warning, I suspect someone will instantly build a linter that makes that a rule because this just looks like a foot-gun<p>Ultimately, this looks like JavaScript without all the foot-guns. Add in some modern features like actors, immutability, and a pattern matching DSL. Add in some new foot-guns like primordial renaming and null punning.<p>If I could snap my fingers and today be able to write Misty in the browser, I'd definitely use it for performance intensive code alongside Typescript until TypedMisty came out, then I'd probably switch for good.<p>However, I'd be absolutely shocked if any major browsers ever support Misty. So it'll probably remain a server side scripting language, which I definitely do not need. Why would I use this on the server for scripting over F#, Clojure, Elixir, or Go?
Look forward to checking it out more, but I found the Turkish 'i' functions particularly interesting. Seems oddly specific - are there not other languages with similar situation? Why isn't this abstracted, I wonder, or why is it included at all? Seems "kitchen sink"-y. Maybe there's some explanation somewhere. Anyways, love Crockford, helped save a project with his JS deepcopy implementation (in addition to JSON and all the other work he's done with the programming community)
> Functions are first-class values...<p>Good<p>> Functions can not be sent in messages to other actors<p>Oh, so not first class. Mutable closures are tricky to implement though, so fair enough.<p>> Function objects are immutable values.<p>Huh. That means you can easily send a function to another actor. Can even serialise it and send it over a network. That stuff is a real pain for closures over mutable state but totally straightforward for immutable values.<p>That seems like a implementation limitation turning up in the language spec instead of fixing the implementation.
"The language is quite strict in its use of spaces and indentation."<p>Not this again. Please stop.<p>Code structure should be explicitly denoted with brackets or whatever. Code <i>formatting</i> is cosmetic, can be applied automatically, and serves as a 'double-entry book-keeping' type check on the structure coded in characters - ie you can easily spot structure errors by pretty-printing.
Overall there's very little to understand from the page in terms of motivation, sample examples etc. But, one interesting thing: The math module allows choosing between radians, degrees and more importantly cycles. I only know of one more project, Pico8 fantasy console, which offers this correct "API" for trigonometry.
to see how the language (likely) looks like, try this input into perplexity.ai :<p>show me the 3 simplest examples of rosettacode implemented in crockford's misty programming language
There's already a dynamic, general-purpose, transitional, actor language, that I'm a big fanboy of, and that's Elixir.<p>I don't see anything here that would make me switch from Elixir, especially with its big ecosystem and head start.