From cf782cbf13d6a57d670e8488acc9c1df1be9c756 Mon Sep 17 00:00:00 2001 From: Sam Vervaeck Date: Wed, 10 Jul 2024 09:32:49 +0200 Subject: [PATCH] Update CONTRIBUTING.md --- CONTRIBUTING.md | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1f1486a9b..8f610dd96 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,14 +1,32 @@ -# LLVM-based Bolt Compiler +# Contributing to Bolt -This directory contains a partial implementation of the Bolt programming -language using C++ and LLVM. It currently is one of the main contenders of -becoming the offical Bolt compiler. +So you want to contribute something to the Bolt language or its compiler? That's +great! We're so glad to have you! -## Developing +## Preliminary Knowledge -You need a recent version of the Zen libries to be able to compile. If youu -still get build errors, the Zen libraries might be out of date. Do not hesitate -to file an issue! +### Type Checking + +Here are some resouces to get started with type checking, ordered from high-level overview to deep dive: + +- [Hindley-Milner Type System](https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_system) +- [Write You A Haskell](https://smunix.github.io/dev.stephendiehl.com/fun/index.html), most notably [this implemenation](https://github.com/sdiehl/write-you-a-haskell/tree/master/chapter7/poly_constraints) +- [Type Inference blog posts by Thunderseethe](https://thunderseethe.dev/posts/type-inference/) +- [Typing Haskell in Haskell](https://gist.github.com/chrisdone/0075a16b32bfd4f62b7b) +- [The Essence of ML Type Inference](http://gallium.inria.fr/~fpottier/publis/emlti-final.pdf) + +## Building + +### 1. Check out the sources + +```sh +git clone https://github.com/boltlang/bolt +git clone https://github.com/samvv/zen bolt/deps/zen +``` + +You need the most recent version of the Zen libries to be able to compile. If +you still get build errors, the Zen libraries in the repositories might be out +of date. Do not hesitate to file an issue! This is how a potential invocation to CMake could look like: