module Data.JsonRpc.Integral ( fromScientific, ) where import Control.Monad (MonadPlus, guard) import Data.Scientific (Scientific, toDecimalDigits) fromScientific :: MonadPlus m => Scientific -> m Integer fromScientific sci = do let (ds, e) = toDecimalDigits sci guard $ sci == 0 || null (drop e ds) -- test integral return $ round sci