A compiler for a purely functional programming language with emphasis on structural typing https://giml-lang.org
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 3ddbbbc45b add favicon to website 2 months ago
examples rewrite even/odd with if expressions 5 months ago
logos logos 6 months ago
src Warnings on variable shadowing 4 months ago
tools/emacs Replace the newtype keyword with type 5 months ago
website add favicon to website 2 months ago
.gitignore Avoid traversing when substituting with empty substitution 5 months ago
.gitlab-ci.yml New website layout 5 months ago
LICENSE Part 01 - define the language skeleton and codegen 7 months ago
Makefile Logging support 4 months ago
README.md Warnings on variable shadowing 4 months ago
cabal.project Add instructions to build with cabal 6 months ago
cabal.project.freeze update cabal.project.freeze 6 months ago
dependencies-licenses.md Update dependencies license 5 months ago
language-ref.org Add variants without an argument 5 months ago
overview.org Logging support 4 months ago
run-examples.sh Update examples to Giml 6 months ago
stack.yaml Logging support 4 months ago
stack.yaml.lock Logging support 4 months ago
todo.org If expressions 5 months ago
wishlist.org Warnings on variable shadowing 4 months ago

README.md

Giml logo Giml

Build status

Giml is a strict, statically typed, purely functional language with emphasis on structural typing.

The compiler currently targets JavaScript, but more backends are planned in the future.

This project is streamed on twitch.tv/suppipi, and past sessions are available on Youtube.

For more information, visit the website.

Build and run

With Stack

> stack run -- compile --input examples/factorial.giml --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 giml -- compile --input examples/factorial.giml --output /tmp/output.js
> node /tmp/output.js
120

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