lookupVar :: Var -> CodeGen (Maybe Operand)
lookupVar (AST.Local i) = do
  CGS vars <- ask
  if (fromIntegral $ length vars) <= i
     then pure Nothing
     else pure . Just $ vars !! (fromIntegral i)
lookupVar :: Var -> CodeGen (Maybe Operand)
lookupVar (AST.Local i) = do
  CGS vars <- ask
  if (fromIntegral $ length vars) <= i
     then pure Nothing
     else pure . Just $ vars !! (fromIntegral i)
lookupVar (AST.Local i) = do
  CGS vars <- ask
  if (fromIntegral $ length vars) <= i
     then pure Nothing
     else pure . Just $ vars !! (fromIntegral i)