AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
kanso (簡素): a pure language where effects are values, failure is a value, dispatch is the only eliminator, and programs have exactly one canonical form.
Translation pending
Developer toolsRust · CGitHub @kanso-langOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
kanso (簡素): the language where the source contains only decisions — phase-1 reference interpreter
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
kanso (簡素): simplicity through the elimination of clutter. A language where the source file contains only decisions. Anything a style guide, linter, or code review would enforce by convention, kanso enforces by making the alternative a compile error or unrepresentable. Programs have a canonical form—one rendering per program—so no formatter tool exists: non-canonical whitespace is a syntax error.Read the full README ↗
kanso (簡素): simplicity through the elimination of clutter.
A language where the source file contains only decisions. Anything a style guide, linter, or code review would enforce by convention, kanso enforces by making the alternative a compile error or unrepresentable. Programs have a canonical form, one rendering per program, so there is no formatter: non-canonical whitespace is a syntax error.
Docs: https://kanso-lang.dev/ · Book: https://kanso-lang.dev/book/ · Spec: https://kanso-lang.dev/spec.html · Compiler: https://kanso-lang.dev/compiler.html
# Division by zero answers a value you dispatch on rather than a failure you
# catch. The specific type is `divide_by_zero`; its parent `math_failure` is
# there for a handler that does not care which kind it was.
fn describe f:divide_by_zero
"no divisor: {f}"
fn describe f:math_failure
"some math failure: {f}"
fn describe n
"result: {n}"
fn safe_ratio a b
a / b
good = safe_ratio 10 2
bad = safe_ratio 10 0
print (describe good) .> (_ -> print (describe bad))
$ kanso play examples/errors.kso
result: 5
no divisor: division by zero
Nothing is thrown. 10 / 0 answers a divide_by_zero value, and the arms of describe dispatch on it like any other type. Nothing is printed while the program is evaluated either: the last line builds a description of two prints, and the runtime performs it.
git clone https://github.com/kanso-lang/kanso
cd kanso
cargo build --release
./target/release/kanso run examples/hello.kso
./target/release/kanso run examples/effects.kso --plan # show the effects instead of performing them
./target/release/kanso play examples/errors.kso
./target/release/kanso check examples/hello.kso
run takes a file of statements or a directory with a main.kso. play takes one file that holds definitions beside its statements. check reports what run would refuse and stops. test runs the test_* constants in each *_test.kso file, build writes a native binary, and repl evaluates expressions as you type them. kanso with no verb prints the usage, which lists the rest.
Three engines run kanso: a tree-walking interpreter, which is the semantics oracle, a native compiler through LLVM, and a browser engine compiled to wasm. Differential goldens hold them byte-identical. The language they run:
print, sequencing with .> (_ -> ...), and --plan to read the description without performing iterr, none and failure kinds such as divide_by_zero propagate until an arm dispatches on themf a b), and lists and maps are space-separated"{expr}", lists indexed from 1, maps, lambdaspub marks what it exports, and kanso install fetches and pins what it importsThe error corpus in tests/golden/errors matters as much as the programs that run: much of the language is in its compile errors.
One TextMate bundle in editors/ highlights .kso in JetBrains IDEs (Settings → Editor → TextMate Bundles → add editors/kanso) and in VS Code (symlink it into ~/.vscode/extensions). See editors/README.md.
cargo test # unit tests and the golden corpora: examples, diagnostics, engines
sh scripts/install_hooks.sh points a clone's git at hooks/, whose
post-merge rebuilds the compiler after each pull. Git will not let a
repository set that for itself, so it is one command per clone.
MIT licensed.