Movatterモバイル変換
[0]ホーム
modulePostgreSQL.Binary.TimewhereimportPostgreSQL.Binary.Preludehiding(second){-# INLINEABLEdayToPostgresJulian#-}dayToPostgresJulian::Day->IntegerdayToPostgresJulian :: Day -> IntegerdayToPostgresJulian=(Integer -> Integer -> Integerforall a. Num a => a -> a -> a+(Integer2400001Integer -> Integer -> Integerforall a. Num a => a -> a -> a-Integer2451545))(Integer -> Integer) -> (Day -> Integer) -> Day -> Integerforall b c a. (b -> c) -> (a -> b) -> a -> cforall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).Category cat =>cat b c -> cat a b -> cat a c.Day -> IntegertoModifiedJulianDay{-# INLINEABLEpostgresJulianToDay#-}postgresJulianToDay::(Integrala)=>a->DaypostgresJulianToDay :: forall a. Integral a => a -> DaypostgresJulianToDay=Integer -> DayModifiedJulianDay(Integer -> Day) -> (a -> Integer) -> a -> Dayforall b c a. (b -> c) -> (a -> b) -> a -> cforall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).Category cat =>cat b c -> cat a b -> cat a c.a -> Integerforall a b. (Integral a, Num b) => a -> bfromIntegral(a -> Integer) -> (a -> a) -> a -> Integerforall b c a. (b -> c) -> (a -> b) -> a -> cforall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).Category cat =>cat b c -> cat a b -> cat a c.a -> a -> aforall a. Num a => a -> a -> asubtract(a2400001a -> a -> aforall a. Num a => a -> a -> a-a2451545){-# INLINEABLEmicrosToTimeOfDay#-}microsToTimeOfDay::Int64->TimeOfDaymicrosToTimeOfDay :: Int64 -> TimeOfDaymicrosToTimeOfDay=State Int64 TimeOfDay -> Int64 -> TimeOfDayforall s a. State s a -> s -> aevalState(State Int64 TimeOfDay -> Int64 -> TimeOfDay)-> State Int64 TimeOfDay -> Int64 -> TimeOfDayforall a b. (a -> b) -> a -> b$doInt64h<-(Int64 -> (Int64, Int64)) -> StateT Int64 Identity Int64forall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m astate((Int64 -> (Int64, Int64)) -> StateT Int64 Identity Int64)-> (Int64 -> (Int64, Int64)) -> StateT Int64 Identity Int64forall a b. (a -> b) -> a -> b$(Int64 -> Int64 -> (Int64, Int64))-> Int64 -> Int64 -> (Int64, Int64)forall a b c. (a -> b -> c) -> b -> a -> cflipInt64 -> Int64 -> (Int64, Int64)forall a. Integral a => a -> a -> (a, a)divMod(Int64 -> Int64 -> (Int64, Int64))-> Int64 -> Int64 -> (Int64, Int64)forall a b. (a -> b) -> a -> b$Int6410Int64 -> Integer -> Int64forall a b. (Num a, Integral b) => a -> b -> a^Integer6Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6460Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6460Int64m<-(Int64 -> (Int64, Int64)) -> StateT Int64 Identity Int64forall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m astate((Int64 -> (Int64, Int64)) -> StateT Int64 Identity Int64)-> (Int64 -> (Int64, Int64)) -> StateT Int64 Identity Int64forall a b. (a -> b) -> a -> b$(Int64 -> Int64 -> (Int64, Int64))-> Int64 -> Int64 -> (Int64, Int64)forall a b c. (a -> b -> c) -> b -> a -> cflipInt64 -> Int64 -> (Int64, Int64)forall a. Integral a => a -> a -> (a, a)divMod(Int64 -> Int64 -> (Int64, Int64))-> Int64 -> Int64 -> (Int64, Int64)forall a b. (a -> b) -> a -> b$Int6410Int64 -> Integer -> Int64forall a b. (Num a, Integral b) => a -> b -> a^Integer6Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6460Int64u<-StateT Int64 Identity Int64forall (m :: * -> *) s. Monad m => StateT s m sgetTimeOfDay -> State Int64 TimeOfDayforall a. a -> StateT Int64 Identity aforall (m :: * -> *) a. Monad m => a -> m areturn(TimeOfDay -> State Int64 TimeOfDay)-> TimeOfDay -> State Int64 TimeOfDayforall a b. (a -> b) -> a -> b$Int -> Int -> Pico -> TimeOfDayTimeOfDay(Int64 -> Intforall a b. (Integral a, Num b) => a -> bfromIntegralInt64h)(Int64 -> Intforall a b. (Integral a, Num b) => a -> bfromIntegralInt64m)(Int64 -> PicomicrosToPicoInt64u){-# INLINEABLEmicrosToUTC#-}microsToUTC::Int64->UTCTimemicrosToUTC :: Int64 -> UTCTimemicrosToUTC=State Int64 UTCTime -> Int64 -> UTCTimeforall s a. State s a -> s -> aevalState(State Int64 UTCTime -> Int64 -> UTCTime)-> State Int64 UTCTime -> Int64 -> UTCTimeforall a b. (a -> b) -> a -> b$doInt64d<-(Int64 -> (Int64, Int64)) -> StateT Int64 Identity Int64forall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m astate((Int64 -> (Int64, Int64)) -> StateT Int64 Identity Int64)-> (Int64 -> (Int64, Int64)) -> StateT Int64 Identity Int64forall a b. (a -> b) -> a -> b$(Int64 -> Int64 -> (Int64, Int64))-> Int64 -> Int64 -> (Int64, Int64)forall a b c. (a -> b -> c) -> b -> a -> cflipInt64 -> Int64 -> (Int64, Int64)forall a. Integral a => a -> a -> (a, a)divMod(Int64 -> Int64 -> (Int64, Int64))-> Int64 -> Int64 -> (Int64, Int64)forall a b. (a -> b) -> a -> b$Int6410Int64 -> Integer -> Int64forall a b. (Num a, Integral b) => a -> b -> a^Integer6Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6460Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6460Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6424Int64u<-StateT Int64 Identity Int64forall (m :: * -> *) s. Monad m => StateT s m sgetUTCTime -> State Int64 UTCTimeforall a. a -> StateT Int64 Identity aforall (m :: * -> *) a. Monad m => a -> m areturn(UTCTime -> State Int64 UTCTime) -> UTCTime -> State Int64 UTCTimeforall a b. (a -> b) -> a -> b$Day -> DiffTime -> UTCTimeUTCTime(Int64 -> Dayforall a. Integral a => a -> DaypostgresJulianToDayInt64d)(Int64 -> DiffTimemicrosToDiffTimeInt64u){-# INLINEABLEmicrosToPico#-}microsToPico::Int64->PicomicrosToPico :: Int64 -> PicomicrosToPico=Integer -> Picoforall a b. a -> bunsafeCoerce(Integer -> Pico) -> (Int64 -> Integer) -> Int64 -> Picoforall b c a. (b -> c) -> (a -> b) -> a -> cforall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).Category cat =>cat b c -> cat a b -> cat a c.(Integer -> Integer -> Integerforall a. Num a => a -> a -> a*(Integer10Integer -> Integer -> Integerforall a b. (Num a, Integral b) => a -> b -> a^Integer6))(Integer -> Integer) -> (Int64 -> Integer) -> Int64 -> Integerforall b c a. (b -> c) -> (a -> b) -> a -> cforall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).Category cat =>cat b c -> cat a b -> cat a c.(Int64 -> Integerforall a b. (Integral a, Num b) => a -> bfromIntegral::Int64->Integer){-# INLINEABLEmicrosToDiffTime#-}microsToDiffTime::Int64->DiffTimemicrosToDiffTime :: Int64 -> DiffTimemicrosToDiffTime=(Int64 -> Pico) -> Int64 -> DiffTimeforall a b. a -> bunsafeCoerceInt64 -> PicomicrosToPico{-# INLINEABLEmicrosToLocalTime#-}microsToLocalTime::Int64->LocalTimemicrosToLocalTime :: Int64 -> LocalTimemicrosToLocalTime=State Int64 LocalTime -> Int64 -> LocalTimeforall s a. State s a -> s -> aevalState(State Int64 LocalTime -> Int64 -> LocalTime)-> State Int64 LocalTime -> Int64 -> LocalTimeforall a b. (a -> b) -> a -> b$doInt64d<-(Int64 -> (Int64, Int64)) -> StateT Int64 Identity Int64forall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m astate((Int64 -> (Int64, Int64)) -> StateT Int64 Identity Int64)-> (Int64 -> (Int64, Int64)) -> StateT Int64 Identity Int64forall a b. (a -> b) -> a -> b$(Int64 -> Int64 -> (Int64, Int64))-> Int64 -> Int64 -> (Int64, Int64)forall a b c. (a -> b -> c) -> b -> a -> cflipInt64 -> Int64 -> (Int64, Int64)forall a. Integral a => a -> a -> (a, a)divMod(Int64 -> Int64 -> (Int64, Int64))-> Int64 -> Int64 -> (Int64, Int64)forall a b. (a -> b) -> a -> b$Int6410Int64 -> Integer -> Int64forall a b. (Num a, Integral b) => a -> b -> a^Integer6Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6460Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6460Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6424Int64u<-StateT Int64 Identity Int64forall (m :: * -> *) s. Monad m => StateT s m sgetLocalTime -> State Int64 LocalTimeforall a. a -> StateT Int64 Identity aforall (m :: * -> *) a. Monad m => a -> m areturn(LocalTime -> State Int64 LocalTime)-> LocalTime -> State Int64 LocalTimeforall a b. (a -> b) -> a -> b$Day -> TimeOfDay -> LocalTimeLocalTime(Int64 -> Dayforall a. Integral a => a -> DaypostgresJulianToDayInt64d)(Int64 -> TimeOfDaymicrosToTimeOfDayInt64u){-# INLINEABLEsecsToTimeOfDay#-}secsToTimeOfDay::Double->TimeOfDaysecsToTimeOfDay :: Double -> TimeOfDaysecsToTimeOfDay=State Double TimeOfDay -> Double -> TimeOfDayforall s a. State s a -> s -> aevalState(State Double TimeOfDay -> Double -> TimeOfDay)-> State Double TimeOfDay -> Double -> TimeOfDayforall a b. (a -> b) -> a -> b$doIntegerh<-(Double -> (Integer, Double)) -> StateT Double Identity Integerforall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m astate((Double -> (Integer, Double)) -> StateT Double Identity Integer)-> (Double -> (Integer, Double)) -> StateT Double Identity Integerforall a b. (a -> b) -> a -> b$(Double -> Double -> (Integer, Double))-> Double -> Double -> (Integer, Double)forall a b c. (a -> b -> c) -> b -> a -> cflipDouble -> Double -> (Integer, Double)forall a b. (Real a, Integral b) => a -> a -> (b, a)divMod'(Double -> Double -> (Integer, Double))-> Double -> Double -> (Integer, Double)forall a b. (a -> b) -> a -> b$Double60Double -> Double -> Doubleforall a. Num a => a -> a -> a*Double60Integerm<-(Double -> (Integer, Double)) -> StateT Double Identity Integerforall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m astate((Double -> (Integer, Double)) -> StateT Double Identity Integer)-> (Double -> (Integer, Double)) -> StateT Double Identity Integerforall a b. (a -> b) -> a -> b$(Double -> Double -> (Integer, Double))-> Double -> Double -> (Integer, Double)forall a b c. (a -> b -> c) -> b -> a -> cflipDouble -> Double -> (Integer, Double)forall a b. (Real a, Integral b) => a -> a -> (b, a)divMod'(Double -> Double -> (Integer, Double))-> Double -> Double -> (Integer, Double)forall a b. (a -> b) -> a -> b$Double60Doubles<-StateT Double Identity Doubleforall (m :: * -> *) s. Monad m => StateT s m sgetTimeOfDay -> State Double TimeOfDayforall a. a -> StateT Double Identity aforall (m :: * -> *) a. Monad m => a -> m areturn(TimeOfDay -> State Double TimeOfDay)-> TimeOfDay -> State Double TimeOfDayforall a b. (a -> b) -> a -> b$Int -> Int -> Pico -> TimeOfDayTimeOfDay(Integer -> Intforall a b. (Integral a, Num b) => a -> bfromIntegralIntegerh)(Integer -> Intforall a b. (Integral a, Num b) => a -> bfromIntegralIntegerm)(Double -> PicosecsToPicoDoubles){-# INLINEABLEsecsToUTC#-}secsToUTC::Double->UTCTimesecsToUTC :: Double -> UTCTimesecsToUTC=State Double UTCTime -> Double -> UTCTimeforall s a. State s a -> s -> aevalState(State Double UTCTime -> Double -> UTCTime)-> State Double UTCTime -> Double -> UTCTimeforall a b. (a -> b) -> a -> b$doIntegerd<-(Double -> (Integer, Double)) -> StateT Double Identity Integerforall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m astate((Double -> (Integer, Double)) -> StateT Double Identity Integer)-> (Double -> (Integer, Double)) -> StateT Double Identity Integerforall a b. (a -> b) -> a -> b$(Double -> Double -> (Integer, Double))-> Double -> Double -> (Integer, Double)forall a b c. (a -> b -> c) -> b -> a -> cflipDouble -> Double -> (Integer, Double)forall a b. (Real a, Integral b) => a -> a -> (b, a)divMod'(Double -> Double -> (Integer, Double))-> Double -> Double -> (Integer, Double)forall a b. (a -> b) -> a -> b$Double60Double -> Double -> Doubleforall a. Num a => a -> a -> a*Double60Double -> Double -> Doubleforall a. Num a => a -> a -> a*Double24Doubles<-StateT Double Identity Doubleforall (m :: * -> *) s. Monad m => StateT s m sgetUTCTime -> State Double UTCTimeforall a. a -> StateT Double Identity aforall (m :: * -> *) a. Monad m => a -> m areturn(UTCTime -> State Double UTCTime)-> UTCTime -> State Double UTCTimeforall a b. (a -> b) -> a -> b$Day -> DiffTime -> UTCTimeUTCTime(Integer -> Dayforall a. Integral a => a -> DaypostgresJulianToDayIntegerd)(Double -> DiffTimesecsToDiffTimeDoubles){-# INLINEABLEsecsToLocalTime#-}secsToLocalTime::Double->LocalTimesecsToLocalTime :: Double -> LocalTimesecsToLocalTime=State Double LocalTime -> Double -> LocalTimeforall s a. State s a -> s -> aevalState(State Double LocalTime -> Double -> LocalTime)-> State Double LocalTime -> Double -> LocalTimeforall a b. (a -> b) -> a -> b$doIntegerd<-(Double -> (Integer, Double)) -> StateT Double Identity Integerforall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m astate((Double -> (Integer, Double)) -> StateT Double Identity Integer)-> (Double -> (Integer, Double)) -> StateT Double Identity Integerforall a b. (a -> b) -> a -> b$(Double -> Double -> (Integer, Double))-> Double -> Double -> (Integer, Double)forall a b c. (a -> b -> c) -> b -> a -> cflipDouble -> Double -> (Integer, Double)forall a b. (Real a, Integral b) => a -> a -> (b, a)divMod'(Double -> Double -> (Integer, Double))-> Double -> Double -> (Integer, Double)forall a b. (a -> b) -> a -> b$Double60Double -> Double -> Doubleforall a. Num a => a -> a -> a*Double60Double -> Double -> Doubleforall a. Num a => a -> a -> a*Double24Doubles<-StateT Double Identity Doubleforall (m :: * -> *) s. Monad m => StateT s m sgetLocalTime -> State Double LocalTimeforall a. a -> StateT Double Identity aforall (m :: * -> *) a. Monad m => a -> m areturn(LocalTime -> State Double LocalTime)-> LocalTime -> State Double LocalTimeforall a b. (a -> b) -> a -> b$Day -> TimeOfDay -> LocalTimeLocalTime(Integer -> Dayforall a. Integral a => a -> DaypostgresJulianToDayIntegerd)(Double -> TimeOfDaysecsToTimeOfDayDoubles){-# INLINEABLEsecsToPico#-}secsToPico::Double->PicosecsToPico :: Double -> PicosecsToPicoDoubles=Integer -> Picoforall a b. a -> bunsafeCoerce(Rational -> Integerforall b. Integral b => Rational -> bforall a b. (RealFrac a, Integral b) => a -> btruncate(Rational -> Integer) -> Rational -> Integerforall a b. (a -> b) -> a -> b$Double -> Rationalforall a. Real a => a -> RationaltoRationalDoublesRational -> Rational -> Rationalforall a. Num a => a -> a -> a*Rational10Rational -> Integer -> Rationalforall a b. (Num a, Integral b) => a -> b -> a^Integer12::Integer){-# INLINEABLEsecsToDiffTime#-}secsToDiffTime::Double->DiffTimesecsToDiffTime :: Double -> DiffTimesecsToDiffTime=(Double -> Pico) -> Double -> DiffTimeforall a b. a -> bunsafeCoerceDouble -> PicosecsToPico{-# INLINEABLElocalTimeToMicros#-}localTimeToMicros::LocalTime->Int64localTimeToMicros :: LocalTime -> Int64localTimeToMicros(LocalTimeDaydayXTimeOfDaytimeX)=letd :: Integerd=Day -> IntegerdayToPostgresJulianDaydayXp :: Integerp=DiffTime -> Integerforall a b. a -> bunsafeCoerce(DiffTime -> Integer) -> DiffTime -> Integerforall a b. (a -> b) -> a -> b$TimeOfDay -> DiffTimetimeOfDayToTimeTimeOfDaytimeXinInt6410Int64 -> Integer -> Int64forall a b. (Num a, Integral b) => a -> b -> a^Integer6Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6460Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6460Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6424Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Integer -> Int64forall a b. (Integral a, Num b) => a -> bfromIntegralIntegerdInt64 -> Int64 -> Int64forall a. Num a => a -> a -> a+Integer -> Int64forall a b. (Integral a, Num b) => a -> bfromIntegral(Integer -> Integer -> Integerforall a. Integral a => a -> a -> adivIntegerp(Integer10Integer -> Integer -> Integerforall a b. (Num a, Integral b) => a -> b -> a^Integer6)){-# INLINEABLElocalTimeToSecs#-}localTimeToSecs::LocalTime->DoublelocalTimeToSecs :: LocalTime -> DoublelocalTimeToSecs(LocalTimeDaydayXTimeOfDaytimeX)=letd :: Integerd=Day -> IntegerdayToPostgresJulianDaydayXp :: Integerp=DiffTime -> Integerforall a b. a -> bunsafeCoerce(DiffTime -> Integer) -> DiffTime -> Integerforall a b. (a -> b) -> a -> b$TimeOfDay -> DiffTimetimeOfDayToTimeTimeOfDaytimeXinDouble60Double -> Double -> Doubleforall a. Num a => a -> a -> a*Double60Double -> Double -> Doubleforall a. Num a => a -> a -> a*Double24Double -> Double -> Doubleforall a. Num a => a -> a -> a*Integer -> Doubleforall a b. (Integral a, Num b) => a -> bfromIntegralIntegerdDouble -> Double -> Doubleforall a. Num a => a -> a -> a+Rational -> Doubleforall a. Fractional a => Rational -> afromRational(IntegerpInteger -> Integer -> Rationalforall a. Integral a => a -> a -> Ratio a%(Integer10Integer -> Integer -> Integerforall a b. (Num a, Integral b) => a -> b -> a^Integer12)){-# INLINEABLEutcToMicros#-}utcToMicros::UTCTime->Int64utcToMicros :: UTCTime -> Int64utcToMicros(UTCTimeDaydayXDiffTimediffTimeX)=letd :: Integerd=Day -> IntegerdayToPostgresJulianDaydayXp :: Integerp=DiffTime -> Integerforall a b. a -> bunsafeCoerceDiffTimediffTimeXinInt6410Int64 -> Integer -> Int64forall a b. (Num a, Integral b) => a -> b -> a^Integer6Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6460Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6460Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int6424Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Integer -> Int64forall a b. (Integral a, Num b) => a -> bfromIntegralIntegerdInt64 -> Int64 -> Int64forall a. Num a => a -> a -> a+Integer -> Int64forall a b. (Integral a, Num b) => a -> bfromIntegral(Integer -> Integer -> Integerforall a. Integral a => a -> a -> adivIntegerp(Integer10Integer -> Integer -> Integerforall a b. (Num a, Integral b) => a -> b -> a^Integer6)){-# INLINEABLEutcToSecs#-}utcToSecs::UTCTime->DoubleutcToSecs :: UTCTime -> DoubleutcToSecs(UTCTimeDaydayXDiffTimediffTimeX)=letd :: Integerd=Day -> IntegerdayToPostgresJulianDaydayXp :: Integerp=DiffTime -> Integerforall a b. a -> bunsafeCoerceDiffTimediffTimeXinDouble60Double -> Double -> Doubleforall a. Num a => a -> a -> a*Double60Double -> Double -> Doubleforall a. Num a => a -> a -> a*Double24Double -> Double -> Doubleforall a. Num a => a -> a -> a*Integer -> Doubleforall a b. (Integral a, Num b) => a -> bfromIntegralIntegerdDouble -> Double -> Doubleforall a. Num a => a -> a -> a+Rational -> Doubleforall a. Fractional a => Rational -> afromRational(IntegerpInteger -> Integer -> Rationalforall a. Integral a => a -> a -> Ratio a%(Integer10Integer -> Integer -> Integerforall a b. (Num a, Integral b) => a -> b -> a^Integer12))-- * Constants in microseconds according to Julian dates standard-- According to-- http://www.postgresql.org/docs/9.1/static/datatype-datetime.html-- Postgres uses Julian dates internallyyearMicros::Int64yearMicros :: Int64yearMicros=Rational -> Int64forall b. Integral b => Rational -> bforall a b. (RealFrac a, Integral b) => a -> btruncate(Rational365.2425Rational -> Rational -> Rationalforall a. Num a => a -> a -> a*Int64 -> Rationalforall a b. (Integral a, Num b) => a -> bfromIntegralInt64dayMicros::Rational)dayMicros::Int64dayMicros :: Int64dayMicros=Int6424Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int64hourMicroshourMicros::Int64hourMicros :: Int64hourMicros=Int6460Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int64minuteMicrosminuteMicros::Int64minuteMicros :: Int64minuteMicros=Int6460Int64 -> Int64 -> Int64forall a. Num a => a -> a -> a*Int64secondMicrossecondMicros::Int64secondMicros :: Int64secondMicros=Int6410Int64 -> Integer -> Int64forall a b. (Num a, Integral b) => a -> b -> a^Integer6
[8]ページ先頭