module NN.Backend.Torch.Lua where import Data.Word import Language.Lua.Syntax newtype LS = L String -- |Handy typeclass for converting arguments class ToLua a where toLua :: a -> Exp instance ToLua Word32 where toLua = Number . show instance ToLua LS where toLua (L s') = String s' instance ToLua Float where toLua = Number . show instance (ToLua a) => ToLua (Maybe a) where toLua Nothing = Nil toLua (Just a) = toLua a -- Helpers for Lua code generation assign :: Name -> Exp -> Stat assign lval exp' = LocalAssign [lval] (Just [exp']) funCall :: Name -> [Exp] -> Stat funCall name' args = FunCall (NormalFunCall (var name') (Args args)) methCall :: Name -> Name -> [Exp] -> Stat methCall table field args = FunCall (MethodCall (var table) field (Args args)) return' :: Name -> Exp return' name' = PrefixExp (var name') var :: Name -> PrefixExp var name' = PEVar (VarName name')