(;module: lux (lux (control [monad #+ do]) (data [maybe] [text] text/format (coll [dict]))) (luxc ["&" base] (lang ["la" analysis])) (. ["./;" common] ["./;" host])) (def: procedures ./common;Bundle (|> ./common;procedures (dict;merge ./host;procedures))) (def: #export (analyse-procedure analyse proc-name proc-args) (-> &;Analyser Text (List Code) (Meta la;Analysis)) (<| (maybe;default (&;fail (format "Unknown procedure: " (%t proc-name)))) (do maybe;Monad [proc (dict;get proc-name procedures)] (wrap (proc analyse proc-args)))))