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
My 3.5yo is learning to use a mouse, and it's super interesting.
He's mastered clicks and drags, but he hasn't yet figured out lifting up the mouse when run out of mouse pad. That's a tricky case where you deliberately break the relationship between mouse and cursor movement.
I've been learning some Common Lisp by writing some simple JSON munging programs. I'm sure it's not best practice — I should probably deserialise to CLOS automatically — but it's a nice way to get comfortable with the basics.
It feels weird deliberately ignoring helpers though.
Spent a bunch of time learning about text diffing algorithms this evening.
"Myers Algorithm" refers to a specific paper written by Eugene Myers, and he published faster algorithms later!