I’ve continued to work on Hindley-Milner type inference, and can now correctly infer types of more complicated parts of the syntax, like expressions and functions.
My current plan is to finish inference for everything but user-defined types, meaning the only usable types will be basic concrete types like ints and strings, and then get this subset compiling properly, but limited to single files (no linking pass). This will give me something real to play with! Once that’s done, I’ll run through the inference/compile passes for the remaining things like sum and record types, then add module linking.
I’m also debating how early to let people see the source and play with Braid. Apparently Guido spent three years getting Python almost to 1.0 before he showed it to anyone. (That was the 80s, though.) On one hand, my code is pretty terrible, because I’m still bad at Go, and I’d love to keep it to myself until it’s ready. On the other, if sharing it generated genuine help, that would be great.