+indexFS :: FastString -> Int -> Char
+indexFS f i@(I# i#) =
+ case f of
+ FastString _ l# ba#
+ | l# ># 0# && l# ># i# -> C# (indexCharArray# ba# i#)
+ | otherwise -> error (msg (I# l#))
+ CharStr a# l#
+ | l# ># 0# && l# ># i# -> C# (indexCharOffAddr# a# i#)
+ | otherwise -> error (msg (I# l#))
+ where
+ msg l = "indexFS: out of range: " ++ show (l,i)
+