58 lines
1.3 KiB
Markdown
58 lines
1.3 KiB
Markdown
# AGENTS.md - tricu Project Guide
|
|
|
|
> For AI agents and contributors working in this repository.
|
|
|
|
## Build & Test
|
|
|
|
```bash
|
|
# Tests
|
|
nix flake check
|
|
|
|
# Build tricu executable
|
|
nix build .#
|
|
```
|
|
|
|
### Never call `cabal` directly
|
|
|
|
> **Rule of thumb:** if it builds, links, or tests, it goes through `nix`.
|
|
|
|
## Project Overview
|
|
|
|
**tricu** (pronounced "tree-shoe") is a programming-language experiment written primarily in Haskell.
|
|
|
|
Core types are in `src/Research.hs`.
|
|
|
|
### File extensions
|
|
|
|
- `.hs` - Haskell source
|
|
- `.tri` - tricu language source (used in `lib/`, `test/`, `demos/`)
|
|
- `.arboricx` - Portable executable bundle
|
|
- `.dag` - Serialized kernel DAG (used by `gen_kernel.zig` at build time)
|
|
|
|
### Haskell tests
|
|
|
|
Tests live in `test/Spec.hs` and use **Tasty** + **HUnit**.
|
|
|
|
```bash
|
|
nix flake check
|
|
```
|
|
|
|
## tricu Language Quick Reference
|
|
|
|
```
|
|
t → Leaf (the base term)
|
|
t t → Stem Leaf
|
|
t t t → Fork Leaf Leaf
|
|
|
|
x = t → Define term x = Leaf
|
|
id = (a : a) → Lambda identity (eliminates to tree calculus)
|
|
head (map f xs) → From lib/list.tri
|
|
|
|
!import "./path.tri" NS → Import file under namespace
|
|
|
|
-- line comment
|
|
```
|
|
|
|
CRITICAL:
|
|
When working with `tricu` `.tri` files ***YOU MUST REVIEW notes/tricu-normalization-rules.md***
|