structures forward-declare then emit their full definition in topological dependency order. an alias to a struct emits as a c typedef. primitives are resolved to c directly on use. <<< Point = type { x int, y int } Node = type { value int, next &Node } Coord = type Point main = fun () { } >>> #include "core.c" struct Point; struct Node; struct Point { integer x; integer y; }; struct Node { integer value; struct Node* next; }; typedef struct Point Coord; void catskill_main(void); void catskill_main(void) { } #include "runtime.c"