Bootstrapping a Type System
Published in 2015, this chronicle by @tosh details the mechanics of building a profitable, self-funded business without venture backing.
The community focused on B2B customer acquisition channels, cold email vs SEO distribution, and balancing full-time employment with side-project development.
Note that this post is from October 2010, and it appears that the magpie repo[0] hasn't been committed to in over two years. In addition, the static type system was ripped out of the language about six months after this blog post was written[1].
This is understandable, given that the approach to typing seemed pretty ad-hoc, really unsafe, and somewhat incoherent. The whole point of a type system is to say something about the runtime behavior of a program before you actually run it. To actually execute fragments of your program as part of the type checking step, then, sortof defeats the purpose. Not only that, but typing can fail while producing side effects in your system, some of which may be harmful (launching the nukes, etc.) There are some systems that do _abstract_ interpretation at this point, but that is a model of an execution, not an actual execution, and is therefore sound in the sense that it will not perform random mutations in this strange running/not running superposition.
[0]: https://github.com/munificent/magpie ↗ [1]: https://github.com/munificent/magpie/commit/58742b0e7f3431c14d29a62c843ed332ed465fbd ↗
It would be interesting to compare to Lux [https://github.com/LuxLang/lux/ ↗]
It seems to try to use the same language for the "normal" expression as well as type expression. Is this an implementation of dependent types, or something different?
I'd love to see the Hindley Milner type system bootstrapped in this language.
I always find munificent's essays super insightful and entertaining. Perfect weekend reading material.
Somewhat (un)related: check out his book on Game Programming Patterns (http://gameprogrammingpatterns.com/ ↗). Great read of software design and patterns (not only for game developers).