main Where Let main args. Let config. (load_config args) In Let program. (SYNTAX.analyze config.root_path) In Let program. (SEMANTICS.analyze program) In Let program. (MECHANICS.analyze program) In (C.emit program) Where Let C. Package "c" Let MECHANICS. Package "mechanics" Let SEMANTICS. Package "semantics" Let SYNTAX. Package "syntax" Where Let load_config args. Let root_path. Match (LIST.fetch args 1) | `just.arg arg | `nothing (OS.die "Usage error.") ; In { Let root_path. root_path } Where Let LIST. Package "list" Let OS. Package "os"