README.asciidoc

May 31, 2018 ยท View on GitHub

= Dfinity Haskell Compiler =

DHC is a Haskell compiler that produces WebAssembly.

It accepts only a tiny subset of the language.

== Live demo ==

https://dhc.dfinity.org

== Installation / Dependencies ==

Run nix build.

== Usage / Examples ==

The dhc program takes Haskell source on standard input and compiles it to WebAssembly on standard output. Two IO functions are defined:


putStr :: String -> IO () putInt :: Int -> IO () -- Int means 64-bit integer.

which respectively call WebAssembly imports:


system.putStr (ptr : i32, len : i32) system.putInt (lo : i32, hi : i32)

In system.putInt, we split the integer into 32-bit halves to make life easier for JavaScript.

The rundhc tool can interpret the output of dhc. It expects the input WebAssembly binary to export a function named main that takes no arguments and returns no arguments.

For example:


$ echo 'public(main) main=putStr"Hello, World!\n"' | ./dhc | ./rundhc Hello, World!

== License ==

http://dfinity.network[*(C) 2017 DFINITY STIFTUNG*].

All code and designs are open sourced under GPL V3.

image::https://user-images.githubusercontent.com/6457089/32753794-10f4cbc2-c883-11e7-8dcf-ff8088b38f9f.png[dfinity logo]