(;module: lux (lux (control [monad #+ do]) (data [maybe] text/format (coll ["d" dict]))) (luxc ["&" base] (lang ["ls" synthesis]) (generator (procedure ["&&;" common]) (host ["$" jvm])))) (def: #export (generate-procedure generate name args) (-> (-> ls;Synthesis (Lux $;Inst)) Text (List ls;Synthesis) (Lux $;Inst)) (<| (maybe;default (&;fail (format "Unknown procedure: " (%t name)))) (do maybe;Monad [proc (d;get name &&common;procedures)] (wrap (proc generate args)))))