sdiehl / write-you-a-haskell Rust 3.5K 257 Building a modern functional compiler from first principles. compiler lambda-calculus type-inference haskell