An impure, mostly functional, statically type inferred programming language targeting javascript and built on stream. Superseded by Giml https://gilmi.gitlab.io/strema
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Gil Mizrahi 35f2b7b7cc fix a bug with record access on non-existing label 6 months ago
examples Fix pattern matching on booleans 6 months ago
logos logos 6 months ago
src fix a bug with record access on non-existing label 6 months ago
website mention giml 6 months ago
.gitignore adding dante targets 6 months ago
.gitlab-ci.yml Restructure the project into 3 packages 6 months ago
LICENSE Part 01 - define the language skeleton and codegen 7 months ago
Makefile Restructure the project into 3 packages 6 months ago
README.md mention giml 6 months ago
cabal.project Add instructions to build with cabal 6 months ago
cabal.project.freeze Add instructions to build with cabal 6 months ago
language-ref.org update docs for sub -> block name change 6 months ago
overview.org update docs for sub -> block name change 6 months ago
stack.yaml Restructure the project into 3 packages 6 months ago
stack.yaml.lock Part 01 - define the language skeleton and codegen 7 months ago
todo.org Adding a few more comments to the Infer module 6 months ago

README.md

strema

Note: See Giml for further development instead

Build status

A compiler targeting javascript for a custom type inferred programming language with first class functions, ADTs and pattern matching.

Status: WIP toy proglang

Strema logo

logos adapted from “Rad Pack – 80’s Theme” Wallpapers by Nate Wren (CC BY-NC 4.0)

This project is streamed on twitch.tv/suppipi. For more information visit the webpage.

Build and run

With Stack

> stack run -- compile --input examples/factorial.strm --output /tmp/output.js
> node /tmp/output.js # use node to run the program
120

With Cabal+GHC:

> cabal v2-update
> cabal v2-build all
> cabal v2-run stremac -- compile --input examples/factorial.strm --output /tmp/output.js
> node /tmp/output.js
120