I created a custom parser recently. I built it in c# and ANTLR4. You need to define grammar and then code the AST which is an object model to handle logic. Not as difficult as it sounds, and you can use ChatGPT or something to help with parts of it.
comments
I think the article suffers a bit from not being up to date in regard to the work Java has done with virtual threads.
There quite a few assumptions being made in the article that would not have been questioned a few years ago, but now these assumptions feel quite unfounded and all the conclusions based on them stand on shaky ground.
{ "print": { "add": ["Hello ", "name"] } } ] } } ]
no (spot the variable)
Ouch! My dignity! Help!
I accept this. Good day sir, sorry about your career 😉
This is definitely not jank.
As a (primarily) Python dev, I hope you use this and have a miserable time lol
I don't hate it... Would take this over python for sure.
Thanks I hate it
This is cursed 🫠
I can kinda see it for a DSL or a transit medium for carrying permitted commands from a client to be heavily assessed prior to executing on a server.
There are other ways to accomplish the same, but it's certainly not the worst way to handle it.
The Who is this for? is amazing.
You call things the way they were defined. Problem solved.
What?
I’m kinda confused, because this is the second time now where your attempt at making a counter argument is actively supporting my point. Is this intentional at your part?
We are ultimately arguing about subjective preferences. I favor of certain syntactic sugar because I believe it improves readability while you seem to be arguing for strict consistency above all else.
So by what metric are we measuring our points?
No we don’t. If your point relies on Turing-tarpitting the whole discussion … then you have no point.
I admit, that was hyperbolic, but I don't see what syntax for data manipulation other than functions would be left in your ideal language.
Some functions also don’t have any parentheses, like field access or infix operators.
You call things the way they were defined. Problem solved.
I'm kinda confused, because this is the second time now where your attempt at making a counter argument is actively supporting my point. Is this intentional at your part?
We could follow this line of thinking further ...
No we don't. If your point relies on Turing-tarpitting the whole discussion ... then you have no point.
registration fees do not differ
True in theory, for most tlds at least, but resellers will really gouge you. I guess I assumed everyone had snatched up all the three-letter anythings long ago to sit on them and charge people out the ass.
Interestingly, numeric .xyz domains of certain lengths are much cheaper than pretty much everything else. 6 to 9 digits, I think.
Some functions also don't have any parentheses, like field access or infix operators.
Who wants to write
sqrt(p.x*p.x+p.y*p.y)
when they could write
sqrt(p.getX().square().add(p.getY().square()))
or even
sqrt(add(square(getX(p)), square(getX(p))))
We could follow this line of thinking further and arrive at an ugly haskell-like language without pattern matching (because that is an artificial distinction between data in a record and data that can be derived from a record) or operators and barely more enjoyable to write that lambda calculus.
Thankfully, registration fees do not differ by length of the domain. (As it should be.)
It cost a larger 3 digit amount of currency to buy it, though. (Which was fine for me.)
Nice website. Tangentially, what's the domain run you? I can't imagine a three-letter .me is cheap.
This submission reminded me that I also had some articles on this topic that people may find interesting.
That's still a workaround to try and keep a completely artificial distinction alive.
Even if I didn't need [] for types, I still wouldn't want "some functions use (), some functions use []" as a language rule.
What? I agree with function[T] style generics, and would be willing to change the access syntax to something like container.[index], as the dot makes the difference quite clear.
Or do you mean the approach to implementing a container or the way the compiler has to transform it into the set operation/mutable access? I didn't think that was such a problem, and I quite like the way it is done in rust, but that approach may be unavailable to many languages.
Wasting a perfectly good pair of brackets on some random function call and then suffering for it in many other places sounds more like syntactic salt.
What's a struct, but a tuple with some names?
What's computation but state and a transition function between states?
What's computation but a set of functions transformed by simple term rewriting?
Let people enjoy their syntax sugar.
What's a form of access but a function from some index type to some element type?
nope