Day 0: Introducing Growl
December Adventure is here and I will be part of it (and hopefully finish the month) by working on Growl, my programming language.
For those not aware, Growl is a statically-typed concatenative language I'm working on. I've rewritten the core like five times at this point and hopefully this will be the last, so stay around to see how it goes!
Some of the main goals with this project are:
- Learning! For example this project taught me how to do type inference for stack languages, with row-polymorphism and all.
- Making something useful that I would use. This is a very lofty goal but I would like to see it done in the future.
I'm using December Adventure mostly as a vehicle to keep myself constant in the work I do and train myself to write about it more often, as I'm really bad at doing technical writing and keeping logs of... everything. ^^"
But also I want to take the opportunity of it being "write a bit of code every day" to also try to write less code. I do a lot of programming in my free time and it's probably about time that I slow down.
About Growl, one of the main points I'm working on is expressing types that
would be infinite in Hindley-Milner-like type inference systems, like the type
of dup call, which can't be inferred using HM.
Previously I solved this by adding a fix construct, which does a similar thing
and does not require recursive types, but I feel like this is a very "band-aid"
like solution, so I want to solve this the right way, if there's any.
Anyways. That's all for today, tomorrow I'll come back with code and stuff to write about it.