-- | Utilities for defining Read\/Show instances.
module Data.Array.Parallel.Base.Text 
        ( showsApp
        , readApp
        , readsApp
        , Read(..))
where
import Text.Read


showsApp :: Show a => Int -> String -> a -> ShowS
showsApp k fn arg 
        = showParen (k>10) 
          (showString fn . showChar ' ' . showsPrec 11 arg)

readApp :: Read a => String -> ReadPrec a
readApp fn 
 = parens $ prec 10 
 $ do   Ident ide <- lexP
        if ide /= fn then pfail else step readPrec


readsApp :: Read a => Int -> String -> ReadS a
readsApp k fn = readPrec_to_S (readApp fn) k