[better Enum instance for Char
John Meacham <john@repetae.net>**20061121104735] hunk ./lib/base/Jhc/Enum.hs 1
-{-# OPTIONS_JHC -N #-}
+{-# OPTIONS_JHC -N -fffi #-}
hunk ./lib/base/Jhc/Enum.hs 61
+instance Enum Char where
+    toEnum = chr
+    fromEnum = ord
+    enumFrom c        = [c .. maxBound::Char]
+    enumFromThen c c' = [c, c' .. lastChar]
+                      where lastChar :: Char
+                            lastChar | c' < c    = minBound
+                                     | otherwise = maxBound
+    enumFromTo x y = f x where
+        f x | x > y = []
+            | otherwise = x:f (incrementChar x)
+    enumFromThenTo x y z  = f x where
+        inc = y `minusChar` x
+        f x | x >= z = x:f (x `plusChar` inc)
+            | otherwise = []
+
+
+foreign import primitive "increment" incrementChar :: Char -> Char
+foreign import primitive "plus"      plusChar      :: Char -> Char -> Char
+foreign import primitive "minus"     minusChar     :: Char -> Char -> Char
+
hunk ./lib/base/Jhc/Order.hs 1
-{-# OPTIONS_JHC -N #-}
+{-# OPTIONS_JHC -N -fffi #-}
hunk ./lib/base/Jhc/Order.hs 46
-instance Enum Char where
-    toEnum = chr
-    fromEnum = ord
-    enumFrom c        = map toEnum [fromEnum c .. fromEnum (maxBound::Char)]
-    enumFromThen c c' = map toEnum [fromEnum c, fromEnum c' .. fromEnum lastChar]
-                      where lastChar :: Char
-                            lastChar | c' < c    = minBound
-                                     | otherwise = maxBound