    -----------------------------------------------------------------------------
    -- |
    -- Module      :  Text.Show.Functions
    -- Copyright   :  (c) The University of Glasgow 2001
    -- License     :  BSD-style (see the file libraries/base/LICENSE)
    --
    -- Maintainer  :  libraries@haskell.org
    -- Stability   :  provisional
    -- Portability :  portable
    --
    -- Optional instance of 'Text.Show.Show' for functions:
    --
    -- > instance Show (a -> b) where
    -- > 	showsPrec _ _ = showString \"\<function\>\"
    --
    -----------------------------------------------------------------------------

    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