lhc-0.6.20090126: lib/base/src/Lhc/Inst/Read.hs
{-# OPTIONS_LHC -N -fm4 #-}
module Lhc.Inst.Read() where
import Prelude.Text
import Data.Int
import Lhc.Basics
import Data.Word
import Lhc.Order
import Lhc.Float
import Prelude.Float
import Lhc.Num
import Numeric(showSigned, showInt, readSigned, readDec, showFloat,
readFloat, lexDigits)
-- Reading at the Integer type avoids
-- possible difficulty with minInt
m4_define(READINST,{{
instance Read $1 where
readsPrec p r = [(fromInteger i, t) | (i,t) <- readsPrec p r]
}})
READINST(Int8)
READINST(Int16)
READINST(Int32)
READINST(Int64)
{-READINST(IntMax)-}
READINST(IntPtr)
m4_define(READWORD,{{
instance Read $1 where
readsPrec _ r = readDec r
}})
READWORD(Word)
READWORD(Word8)
READWORD(Word16)
READWORD(Word32)
READWORD(Word64)
READWORD(WordMax)
READWORD(WordPtr)
instance Read () where
readsPrec p = readParen False
(\r -> [((),t) | ("(",s) <- lex r,
(")",t) <- lex s ] )
instance Read Double where
readsPrec p = readSigned readDouble
instance Read Float where
readsPrec p s = [ (doubleToFloat x,y) | (x,y) <- readSigned readDouble s]