Table of Contents

Raven programming language

This section covers Raven as it exists today: a .NET language with an expression-oriented style, explicit mutability, pattern matching, Option/Result-based flow, records and primary constructors, extensions/traits, and direct .NET interop.

Raven is under active development. The reference describes current behavior and marks features whose design is still especially likely to change.

Start here

Language topics

Use the language reference index for the complete topic list. The reference is grouped into recognizable areas:

Current shape in one screen

import System.Console.*

func Main() -> () {
    let result = match ParsePort("8080") {
        Ok(let port) => "Listening on $port"
        Error(let err) => "Invalid port: $err"
    }

    WriteLine(result)
}

func ParsePort(text: string) -> Result<int, string> {
    return int.Parse(text) match {
        Ok(let value) => Ok(value)
        Error(_) => Error("not a number")
    }
}

Use the introduction for a guided overview and the language reference for feature documentation and the common rules developers need in practice.

Language proposals and compiler development notes are maintained separately in the source repository. They are useful to contributors, but do not define the user-facing language documentation.