pikelet
pikelet copied to clipboard
A friendly little systems language with first-class types. Very WIP! 🚧 🚧 🚧
> I poke fun at expression parser/evaluator written in OO style, because really the visitor pattern is just asking for it. But I have a weird, almost morbid fondness for...
## Resources - Testing an Optimising Compiler by Generating Random Lambda Terms ([Paper](http://www.cse.chalmers.se/~russo/publications_files/AST2011.pdf)) ([Code](http://www.cse.chalmers.se/~palka/testingcompiler/)) - Effect-Driven QuickChecking of Compilers ([Paper](http://janmidtgaard.dk/papers/Midtgaard-al%3AICFP17-full.pdf)) ([Code](https://github.com/jmid/efftester)) ([Talk](https://www.youtube.com/watch?v=_KrZzaShDew))
This should reduce the memory footprint of the type checker, and also make it faster to clone identifiers. LALRPOP uses [string_cache](https://crates.io/crates/string_cache) for this. I've updated our name binding crate to...
At the moment our issues are a mess, and not very well categorised. We should probably adopt [a labelling scheme like Rust's](https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#issue-triage)! Plasma has [a nice labelling scheme](https://github.com/PlasmaLang/plasma/labels) with a...
This would mean that we wouldn't need to wait around for the CI to pass before merging. Also makes use look more 'legit'! https://bors.tech/
For Pikelet to be of much use at all, we should allow definitions to be recursive. I would like to add totality checking at some stage, like [Idris has](http://docs.idris-lang.org/en/latest/tutorial/theorems.html?highlight=totality#sect-totality). [Mutually...
Quantitative type theory promises to get us both erasure and linear types in the same feature. The idea is that we could add usage count annotations (multiplicities) to each binder...
Currently it's hard to get much insight into what the type checker is doing when it is checking a term, even with a debugger. This is a barrier to entry...
Here are some common errors that are often ignored, but would be nice to be able to avoid either statically or ensure they are accounted for at runtime: - Out...
It would be nice for our data types to be unboxed by default, similar to how Rust and [Sixten](https://github.com/ollef/sixten) do it. Records for instance should be represented in a contiguous...