Monty is designed to introduce powerful functional features/abstractions in a familiar form. Learning a language like Haskell with no prior functional experience can seem very daunting. Monty aims to incorperate pythonic syntax with a subset of features and ideas usually found in languages like Haskell. This hopefully encourages more people to get their feet wet and learn some functional basics. Hopefully after some experienc with the basics Haskell and other "intimidating" languages will seem much more approachable.

Core Ideas

While we wanted this language to feel similar to python we felt quite strongly that it should be a pure language. We've done our best to reuse python syntax to evoke a general intuition about how a monty feature should be used. For example we use the keyword class in monty. In no way is monty object oriented, class is actually used to define new data types. However there is some similarity between an object and a data type. They're both containers that can hold some data. They also both have constructors that are used to instantiate new instances using some parameters. We hope that by drawing parallels for new users the language will be easier to pick up and learn.

This doesn't mean that there's no new syntax. We only use existing syntax/keywords when we feel it draws a good parallel that will be helpful for new users. In cases where it doesn't new syntax will be introduced as appropriate. In addition, while we've tried to keep as many language features from python as possible there are some that needed to be modified in order for monty to be a cohesive functional language.