cgOp LStrIndex [s, i] = do
  ns <- unbox FString s
  ni <- unbox (FArith (ATInt (ITFixed IT32))) i
  p <- inst $ GetElementPtr True ns [ni] []
  c <- inst $ loadInv p
  c' <- inst $ ZExt c (IntegerType 32) []
  box (FArith (ATInt ITChar)) c'
cgOp LStrIndex [s, i] = do
  ns <- unbox FString s
  ni <- unbox (FArith (ATInt (ITFixed IT32))) i
  p <- inst $ GetElementPtr True ns [ni] []
  c <- inst $ loadInv p
  c' <- inst $ ZExt c (IntegerType 32) []
  box (FArith (ATInt ITChar)) c'
cgOp LStrIndex [s, i] = do
  ns <- unbox FString s
  ni <- unbox (FArith (ATInt (ITFixed IT32))) i
  p <- inst $ GetElementPtr True ns [ni] []
  c <- inst $ loadInv p
  c' <- inst $ ZExt c (IntegerType 32) []
  box (FArith (ATInt ITChar)) c'