addArray :: String -> [OP.F18Word] -> State St ()
addArray name values = do state@St { vars, startData } <- get
                          let mem = Mem (genericLength startData) (genericLength values)
                          case lookup name vars of
                            Nothing -> put state { vars = (name, mem) : vars
                                                , startData = startData ++ values }
                            Just{}  -> return ()
addArray :: String -> [OP.F18Word] -> State St ()
addArray name values = do state@St { vars, startData } <- get
                          let mem = Mem (genericLength startData) (genericLength values)
                          case lookup name vars of
                            Nothing -> put state { vars = (name, mem) : vars
                                                , startData = startData ++ values }
                            Just{}  -> return ()
addArray name values = do state@St { vars, startData } <- get
                          let mem = Mem (genericLength startData) (genericLength values)
                          case lookup name vars of
                            Nothing -> put state { vars = (name, mem) : vars
                                                , startData = startData ++ values }
                            Just{}  -> return ()