Skip to content
/ Hanno Public

A general-purpose functional programming language that I built to learn about developing compilers.

License

Notifications You must be signed in to change notification settings

Armani-T/Hanno

Repository files navigation

Hanno README

License Build Status codecov Updates Python 3

|-|   |-|
| |   | |
| |___| |
| _____ |   ____   _____   _____   _____
| |   | |  / _  | / ___ \ / ___ \ /  _  \
| |   | | | (_| | | | | | | | | | | (_) |
|_|   |_|  \__,_| |_| |_| |_| |_| \_____/

A general-purpose functional programming language built around making algebraic-effects practical.

Algebraic effects are a new method of adding impurity to purely functional languages using continuations. In practice, they act like exceptions in imperative languages but you can use them for anything from I/O to mutable state to regular exceptions.

Features

I plan for the language to have (at least) these features:

  • First class functions
  • Hindley-Milner type inference
  • Effect inference
  • Algebraic Data Types
  • Sum types
  • Haskell-style type classes
  • Fiber-based concurrency
  • An OCaml-style module system

Installation

Here's how to get it on your machine:

git clone https://github.com/Armani-T/Hanno
cd hanno

At the moment, the language is not fully implemented so it cannot run any code but that will change very soon.

You can check if it's working by running python hanno --version. If it installed properly, it should print out Hasdrubal Version 0.0.1

Development Setup

Just follow the above steps but before working on the code also run:

pip install -r requirements-dev.txt

Contributing

Please use GitHub issues for bug reports and feature requests.

  1. Create your feature branch by forking the develop branch.
  2. Commit your changes.
  3. Push to origin/develop.
  4. Open a pull request.

Notes

I'm currently working on a python implementation which will serve as the reference for a future Rust implementation in order to make it faster.

Meta

This project is licensed under the MIT License. Please see the license file for more information on the licensing.

About

A general-purpose functional programming language that I built to learn about developing compilers.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages