(;module: lux (lux (control monad) (data [text] text/format (coll ["D" dict]) maybe)) (luxc ["&" base] (lang ["la" analysis #+ Analysis])) (. ["&&;" lux])) (def: #export (analyse-proc analyse [proc-category proc-name] proc-args) (-> &;Analyser Ident (List Code) (Lux Analysis)) (default (let [proc-description (format "[" (%t proc-category) " " (%t proc-name) "]")] (&;fail (format "Unknown procedure: " proc-description))) (do Monad [procs (D;get proc-category &&lux;procs) proc (D;get proc-name procs)] (wrap (proc analyse proc-args)))))