Korrin

A programming language

Nineteen keywords.
One obvious way.

Korrin is a real, usable language with as little incidental complexity as possible. Indentation defines blocks — no braces. A newline ends a statement — no semicolons. Dynamically typed, implemented in Rust.

A taste

It reads the way you would say it

Nothing sits between you and the idea. Here is FizzBuzz: a function, a loop over a range, and a four-way branch.

fizzbuzz.kor

# count to n, but Fizz / Buzz on the multiples
fn fizzbuzz(n):
    for i in range(1, n + 1):
        if i % 15 == 0:
            print("FizzBuzz")
        elif i % 3 == 0:
            print("Fizz")
        elif i % 5 == 0:
            print("Buzz")
        else:
            print(i)

fizzbuzz(15)

output

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

Design

Five rules it holds to

Each of these is a decision on the record. When two features would do the same job, Korrin keeps one.

Indentation is the block

No braces, no end. The structure you see is the structure that runs.

A newline ends a statement

No semicolons, and no way to cram two statements onto one line.

Nineteen keywords

The whole reserved vocabulary fits in a sentence. Nothing is there because another language has it.

Dynamically typed

No required annotations. Values carry their type; you carry the intent.

One clear way

For any given construct there is a single obvious expression of it — the rest were left out on purpose.

Learn Korrin

Where to start

Korrin isn't packaged for install yet — the interpreter is still maturing. Until it is, the guide and the specification are how to get to know the language.

The guide

A hands-on walk through the whole language, chapter by chapter. Every example is executed on each build, so it can't drift.

The specification

The exact rules — lexical structure, grammar, semantics, every error code. Normative: if the implementation disagrees, one of them is a bug.

Design notes

Every meaningful decision, written down when it was made — why a feature works one way and not another.

Milestone 1

Korrin runs real programs today: variables, control flow, functions, closures, classes with single inheritance and super, lists, maps, and a small set of built-ins — all covered by a specification whose examples are executed on every build.

It is pre-release. The language and its API will change, and modules, error handling, and string interpolation are still ahead — the specification grows with it.