(.module: lux (lux [macro] (data [text] text/format)) (luxc ["&" lang] (lang [".L" variable #+ Variable Register] (host ["_" php #+ VExpression]))) [//] (// [".T" runtime])) (do-template [ ] [(def: #export (-> Register VExpression) (|>> (:! Int) %i (format ) _.var))] [closure "c"] [variable "v"]) (def: #export (local var) (-> Variable VExpression) (if (variableL.captured? var) (closure (variableL.captured-register var)) (variable (:! Nat var)))) (def: #export global (-> Ident VExpression) (|>> //.definition-name _.var)) (do-template [ ] [(def: #export (-> (Meta VExpression)) (|>> (:: macro.Monad wrap)))] [translate-variable Variable local] [translate-definition Ident global] )