Skip to content
Small functional language that compiles to JavaScript.
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
examples
lib
site
src
test
.hgignore
Makefile
README.md
interleaved-roy.js
package.json
roy
run-tests.roy

README.md

Roy

Roy is a small functional language that compiles to JavaScript. It has a few main features:

  • Damas-Hindley-Milner type inference
  • Whitespace significant syntax
  • Compile-time meta-programming
  • Simple tagged unions
  • Pattern matching
  • Structural typing
  • Monad syntax
  • Not-horrible JS output

Usage

To compile:

make deps
make

To enter a REPL:

./roy

To compile and run a .roy file:

./roy -r examples/helloworld.roy

To compile a .roy file to .js:

./roy examples/helloworld.roy
cat examples/helloworld.js

Example

Input (test.roy):

let addTwo n =
    n + 2

console.log (addTwo 40)

Output (test.js):

var addTwo = function(n) {
return n + 2;
}
console.log(addTwo(40))

Calling addTwo "test" will result in a compile-time error.

See the examples directory for more.

TODO

  • Mutable types
  • Types across modules
  • Allow explicit types that have type parameters
  • Standard libary
  • Tail recursion
Something went wrong with that request. Please try again.