+#ifdef __GLASGOW_HASKELL__
+showListWith :: (a -> ShowS) -> [a] -> ShowS
+showListWith = showList__
+#else
+showList__ :: (a -> ShowS) -> [a] -> ShowS
+showList__ _ [] s = "[]" ++ s
+showList__ showx (x:xs) s = '[' : showx x (showl xs)
+ where
+ showl [] = ']' : s
+ showl (y:ys) = ',' : showx y (showl ys)
+#endif