All Projects → danieljharvey → mimsa

danieljharvey / mimsa

Licence: other
small programming language. pls be gentle.

Programming Languages

haskell
3896 projects
typescript
32286 projects
Nix
1067 projects
javascript
184084 projects - #8 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to mimsa

Remeda
A utility library for JavaScript and TypeScript.
Stars: ✭ 774 (+3265.22%)
Mutual labels:  functional, programming
Swiftz-Validation
A data structure for validations. It implements the applicative functor interface
Stars: ✭ 15 (-34.78%)
Mutual labels:  functional, programming
Arare
Lightweight curried functional programming library
Stars: ✭ 127 (+452.17%)
Mutual labels:  functional, programming
Observable
The easiest way to observe values in Swift.
Stars: ✭ 346 (+1404.35%)
Mutual labels:  functional, programming
polyrpc
PolyRPC, A multi-tier functional programming language
Stars: ✭ 16 (-30.43%)
Mutual labels:  functional, programming
YLib
📖 Kişisel Kütüphanem
Stars: ✭ 19 (-17.39%)
Mutual labels:  programming
karan36k.github.io
These are all the articles and pages I have in my data science website. I try to transcribe all I learn and post regularly. Please visit and feel free to email me for suggestions.
Stars: ✭ 22 (-4.35%)
Mutual labels:  programming
JavaUltimateTools
A Large Repository Of Awesome Code For Java.
Stars: ✭ 24 (+4.35%)
Mutual labels:  programming
HALO-SCRIPT-PROJECTS
✅ Halo PC|CE - Add-ons for Phasor V2+ and SAPP 🇳🇿
Stars: ✭ 25 (+8.7%)
Mutual labels:  programming
gretea
Fegeya Gretea (aka green tea), new generation programming language.
Stars: ✭ 14 (-39.13%)
Mutual labels:  programming
vania
A module which fairly distributes a list of arbitrary objects among a set of targets, considering weights.
Stars: ✭ 75 (+226.09%)
Mutual labels:  programming
SubmiBot
Plugin do Eclipse para automatização do processo de submissão de tarefas na disciplina de LP2 - Computação@UFCG
Stars: ✭ 16 (-30.43%)
Mutual labels:  programming
technical-articles
Just a place where I can store demo projects for my technical articles.
Stars: ✭ 28 (+21.74%)
Mutual labels:  programming
programa101
💻 🎓 Curso de programação para iniciantes
Stars: ✭ 21 (-8.7%)
Mutual labels:  programming
bitECS
Functional, minimal, data-oriented, ultra-high performance ECS library written in JavaScript
Stars: ✭ 372 (+1517.39%)
Mutual labels:  functional
python-programming-for-data-science
Content from the University of British Columbia's Master of Data Science course DSCI 511.
Stars: ✭ 29 (+26.09%)
Mutual labels:  programming
blog
My Blog About Computers
Stars: ✭ 106 (+360.87%)
Mutual labels:  programming
scala-iso
ISO 3166-1, ISO 3166-2, ISO 4217, E.164, ISO related types in Scala. Country codes, Country Subdivision, Country Currency, Calling Code, etc...
Stars: ✭ 34 (+47.83%)
Mutual labels:  functional
java-core
learning tests -- os, network, mysql, programming, design pattern, java tech, kafka etc
Stars: ✭ 14 (-39.13%)
Mutual labels:  programming
njsx
A customizable and declarative interface for creating React and React Native components without JSX syntax.
Stars: ✭ 29 (+26.09%)
Mutual labels:  functional

mimsa

Mimsa is a small programming language.

It is inspired syntactically by Elm and Haskell.

It works by saving expressions into a database and referencing them by hashes like Unison.

It can be used through a repl or it's own web-based editor.

It compiles to readable Javascript.

It aims to become a specialised DSL for small backend services, much like Elm is for frontends, however currently it's just a fun way to play with functional programming without installing anything.

Try it at mimsa.isverymuchmybusiness.com

Getting started

Scratch

When you open Mimsa, you'll see the Scratch screen. This is like a repl where you can try out expressions.

Screenshot 2021-07-10 at 18 44 24

Let's try making a simple expression:

Screenshot 2021-07-10 at 18 44 41

Note that now we have some input, the Evaluate button has appeared. Let's click it:

Screenshot 2021-07-10 at 18 44 47

It's evaluated the expression, 20, in pink, and the type of the expression, Int, in blue. Note we have not had to mention any types - in Mimsa they are all inferred.

Exploring expressions

At the bottom of the screen we have a set of names. These are all the expressions bound to names in our project.

Screenshot 2021-07-10 at 18 48 22

If we click on any of them we can view the code for the expression.

Screenshot 2021-07-10 at 18 49 06

We can change the code here, and even press Update to save a new expression and bind it to the name. This means any new users of the function will use your new version, but any old versions will still use the old version of the function.

Note the Compile export button - this allows us to turn this expression into Javascript and download it. Export is the default runtime which just exports the function. There are a few other runtimes which allow Mimsa to do various side effects (more on this stuff soon).

There is more info on the syntax.

Other menu items to try

Add a new binding, ie, make a new expression and then give it a name, so that it can be used in other expressions.

🧷 Add a new datatype that can be used in other expressions. The compiler will also try and create you helper functions for manipulating your datatype and save those in another expression.

🧪 Add a unit test. As all values and expressions in Mimsa are immutable, this test will only be run once, and the output stored and linked to all the expressions it uses.

🔎 Type search - find useful functions by searching the type you are looking for, ala Hoogle.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].