-- Stability : provisional
-- Portability : portable
--
--- Optional instance of Text.Show.Show for functions.
+-- Optional instance of 'Text.Show.Show' for functions:
+--
+-- > instance Show (a -> b) where
+-- > showsPrec _ _ = showString \"\<function\>\"
--
-----------------------------------------------------------------------------
-module Text.Show.Functions where
+module Text.Show.Functions () where
import Prelude
+#ifndef __NHC__
instance Show (a -> b) where
showsPrec _ _ = showString "<function>"
+#else
+instance (Show a,Show b) => Show (a->b) where
+ showsPrec d a = showString "<<function>>"
+
+ showsType a = showChar '(' . showsType value . showString " -> " .
+ showsType result . showChar ')'
+ where (value,result) = getTypes undefined
+ getTypes x = (x,a x)
+#endif