I'm having fun writing a simple type checker, but I'm learning firsthand why syntax-directed checking doesn't work. It prevents inference.
My checker catches real bugs, but it can't handle cases like this:
[1, 2].map(fun(x) { x + 1; })
I think I need bidirectional checking.
miniblog.
Related Posts
Are there any package managers that treat changelogs as a first class concept?
I end up looking for a CHANGELOG.md or a CHANGES.txt in the source code repository every time. The lack of standard prevents package hosting services being able to show changes.
Listening to the latest episode of Maintainable interviewing Daniela Baron, and she introduces a clever concept: ticket rotation.
When you divide programming jobs into tickets, deliberately give team members tickets from different areas. This prevents knowledge silos.
I'm a fan of simple issue trackers. A description, comments, and maybe a small integration with something.
Given this, perhaps it makes sense to build your own? You get a bespoke solution, and focusing on your main project prevents feature creep.