Skip to content
Programming language focused on expression
C++ Other
  1. C++ 99.0%
  2. Other 1.0%
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Prelude-dir
docs
src
tests
.gitignore
.travis.yml
LICENSE.md
Makefile
README.md
cloc.cfg
roo.vim
test.roo

README.md

Roo

Build Status

Roo is a imperitive programming language that takes concepts from functional programming. Its central goal is to avoid the kitchen-sink-esque hodgepodge of languages like C++, instead expressing logic through fewer, more powerful features.

Aims

  • No separation of definition and implementation (no headers)
  • Easier build process - nice source and dependency management
  • Safety - strong type-checking and powerful expression of programmer intent
  • Terse, expressive syntax - no extranious punctuation

It looks something like this:

#[Name(example)]

import Prelude

type color
{
  r : float
  g : float
  b : float
  a : float
}

fn PrintColor(color : color&)
{
  PrintFmt("Color: ({}, {}, {}, {})\n", color.r, color.g, color.b, color.a)
}

#[Entry]
fn Main() -> int
{
  #[Debug]
  Print("Hello, World!\n")

  // Make and print a color
  myColor : color{1.0f, 0.0f, 1.0f, 1.0f}
  PrintColor(myColor)

  return 0
}

Using the compiler

  • At the moment, The compiler can only produce executables usable on x86_64, System-V, ELF-compatible systems
  • (Temporary step) Run make prelude to build Prelude (our standard library)
  • Run ./roo to compile and link all the files in the current directory
  • Various DOT files will also be produced, which may be converted to PNG with dot -Tpng -o {file}.png {file}.dot

Contributing

Contributions are welcome. Current tasks and long-term goals can be found on the Trello. Please keep to the style of the existing code.

You can’t perform that action at this time.