|-| |-|
| | | |
| |___| |
| _____ | ____ _____ _____ _____
| | | | / _ | / ___ \ / ___ \ / _ \
| | | | | (_| | | | | | | | | | | (_) |
|_| |_| \__,_| |_| |_| |_| |_| \_____/
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.
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
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
Just follow the above steps but before working on the code also run:
pip install -r requirements-dev.txt
Please use GitHub issues for bug reports and feature requests.
- Create your feature branch by forking the
develop
branch. - Commit your changes.
- Push to
origin/develop
. - Open a pull request.
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.
- Name: Armani Tallam
- E-Mail: armanitallam@gmail.com
- GitHub: https://www.github.com/Armani-T
This project is licensed under the MIT License. Please see the license file for more information on the licensing.