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}
map
mean
, sd
select
, mutate
Each 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.