calcChar (EKey container k) = getFromCont container k
  where
    getFromCont (EStr s) k       = do i <- intFromEInt k
                                      return $ EChar $ head $ drop i s

    getFromCont (EVar ident) key = do a <- askExp ident
                                      getFromCont a key
calcChar (EKey container k) = getFromCont container k
  where
    getFromCont (EStr s) k       = do i <- intFromEInt k
                                      return $ EChar $ head $ drop i s

    getFromCont (EVar ident) key = do a <- askExp ident
                                      getFromCont a key
calcChar (EKey container k) = getFromCont container k
  where
    getFromCont (EStr s) k       = do i <- intFromEInt k
                                      return $ EChar $ head $ drop i s

    getFromCont (EVar ident) key = do a <- askExp ident
                                      getFromCont a key