T is an experimental programming language for declarative, functional manipulation of tabular data. Inspired by R’s tidyverse and OCaml’s type discipline, T aims to make data manipulation clear, expressive, and extensible.
Status: Very early, exploratory phase. Entirely generated via iterative AI prompts.
select(), filter()select(name, age)print()T is not trying to replace R. Instead, it’s a small, focused language for data wrangling, graphics, and basic stats — without general-purpose baggage.
Perfect for teaching, scripting, or exploratory work — with a REPL-first workflow.
data = read_csv("data.csv")
select(data, name, age)
Also supports:
\(x) x + 1[x * x for x in numbers if x > 2]{name: "Alice", age: 30}mapmean, sdselect, mutateEach package is one file per function, e.g. colcraft.select.ml
Nix Flakes-powered decentralized registry. All packages live in their respective GitHub repos. A curated, centralized registry of official packages is planned. Avoids dependency hell and all contributions are transparent.
.
├── flake.nix
├── ast.ml
├── parser.ml
├── lexer.ml
├── eval.ml
├── repl.ml
├── csv_reader.ml
└── packages/
├── core/
│ └── map.t
├── stats/
│ └── mean.t
└── colcraft/
└── select.t
nix develop dune exec ./repl.exe
User packages can be merged into the centralized package registry, or you can keep them private.
License: EUPL v1.2.