initState :: Int -> Int -> IO GrLangState
initState maxValues maxLists = GrLangState
  <$> newIORef TypeGraph.empty
  <*> newIORef Map.empty
  <*> newIORef Map.empty
  <*> newIORef (Set.singleton "<repl>")
  <*> newIORef (Set.singleton "<repl>")
  <*> emptyMemSpace maxValues
  <*> emptyMemSpace maxLists
initState :: Int -> Int -> IO GrLangState
initState maxValues maxLists = GrLangState
  <$> newIORef TypeGraph.empty
  <*> newIORef Map.empty
  <*> newIORef Map.empty
  <*> newIORef (Set.singleton "<repl>")
  <*> newIORef (Set.singleton "<repl>")
  <*> emptyMemSpace maxValues
  <*> emptyMemSpace maxLists
initState maxValues maxLists = GrLangState
  <$> newIORef TypeGraph.empty
  <*> newIORef Map.empty
  <*> newIORef Map.empty
  <*> newIORef (Set.singleton "<repl>")
  <*> newIORef (Set.singleton "<repl>")
  <*> emptyMemSpace maxValues
  <*> emptyMemSpace maxLists