WalkerCodeRangr
WalkerCodeRangr on Hacker News
I don't have any direct experience with Menhir because I haven't tried to write a compiler in OCaml yet. It does seem to be one of the better parser generators and is frequently recommended. Skimming the docs, its seems to be lacking in these areas:
* Concrete syntax trees (as you pointed out)
* LR(1) will probably still be more restrictive than I want
* Unicode support (defaults to ocamllex, requires custom code to use ulex)
* Intransitive Operator Precedence isn't supported (though it does have regular precedence levels and associativity)
* While it looks to have better error handling than most LR parser generators, I suspect it still isn't where I'd want it to be.
I suspect there are other issues, but I don't want to go any further beyond my knowledge base than I already have. I've been thinking about writing on this topic more, if I do, then I might address this more.With regard to operator precedence, my position may be closer to yours than you think. In the post I linked to about intransitive operator precedence (https://blog.adamant-lang.org/2019/operator-precedence/) I describe what I want. Basically, I think basic order of operations like `*` before `+` and associativity are important. But in more complicated cases you should be forced to put in parentheses. Exactly where that line is drawn can be debated. What I want is a way of handling operator precedence that is more complicated under the hood, but should be more natural for the programmer as it will respect basic precedence, but not leave you guessing about confusing expressions. i.e. `a/b/c` could be illegal and require parentheses even though `a+b/c` doesn't.
Advice for Open-Source Projects
The State of JavaScript Build Tools 2015
What I Think CoffeeScript Should Have Been
Are JavaScript Linters the Answer?
My only experience using DT was through Nuget so I didn't realize you had the semver postfix. I suspect that like me most .NET devs will go to Nuget first, so I personally would place a high priority on getting semver in Nuget, but I understand that there are lots of other important things too.
My suggestion would to make including a semver part of your quality requirements so that at least you have a record of what version they were working against when they made the type definitions.
I hadn't realized the interdependent library testing/validation. You really are in a pickle about git branching/tagging and not being able to have separate repos. Problem is, the side by side definitions for different versions makes it difficult to merge fixes across versions (as compared to say a different branch for each version of the library). I think this is something that needs to be thought about long and hard. Could you use git submodules or subtrees to do what you need? Perhaps have each library in its own repo but then have a repo that pulls them together and has the interdependecy testing? That way most contributors could work in the repo for the project they care about and only a few contributors would worry about the combined one?
Thanks for sharing your experience with TypeScript and what is good about it. It's just not possible for me to address everything bad & good about a language in one blog post, so I have to focus on what's relevant to the point I am trying to make (in this case why I don't personally think TypeScript is the answer to JavaScript).
I absolutely agree that meshing with the JS ecosystem is of critical importance and Dart just doesn't have that the way TypeScript or CoffeeScript does.
Also, how will the Definitely Type project be able to handle a fix to the definitions of an old version that doesn't apply to the current version?
Like jstclair I appreciate their hard work, but I think they really need to change their approach soon to avoid a lot of pain down the road.
I also want to gauge interest in creating another alternative to see whether it would be worth my time and effort.
I actually really like Haskell though I have never had the chance to do a project in it. I appreciate the strong type inference and its flexibility in static typing. I occasionally find myself frustrated my C#'s limitations around complex typing. Like that there is nothing close to existential types and you can't create more complex generic type constraints.
Scala seems cool in what little I have read about it. I really respect Martin Odersky who designed it. I'd like to learn more about it, until I do I can't speak much to it.
That being said, for the reasons I spelled out I think the current crop of options are really lacking. I get that developers are going to use whatever tool they have to get what they need done, but I don't see why we shouldn't provide them great tools to do their work in.
I'm interested in a source for your statement that "Crockford loves Coffeescript". What I found was http://zhan.renren.com/h5/entry/3602888497994246013 which while very favorable sounds more like my statement that it is good things like this are happening. He concludes "I'm not sure there's enough of a payoff there. But just as an experiment, as a design exercise, I think it's a brilliant piece of work."