    {-# LANGUAGE CPP, NoImplicitPrelude #-}
    module Data.Ratio.Compat (
      module Base
    #if MIN_VERSION_base(4,4,0) && !(MIN_VERSION_base(4,9,0))
    , denominator
    , numerator
    #endif
    ) where

    #if !(MIN_VERSION_base(4,4,0)) || MIN_VERSION_base(4,9,0)
    import Data.Ratio as Base
    #else
    import Data.Ratio as Base hiding (
        denominator
      , numerator
      )
    import GHC.Real (Ratio(..))
    #endif

    #if MIN_VERSION_base(4,4,0) && !(MIN_VERSION_base(4,9,0))
    -- | Extract the numerator of the ratio in reduced form:
    -- the numerator and denominator have no common factor and the denominator
    -- is positive.
    numerator :: Ratio a -> a
    numerator (x :% _) = x

    -- | Extract the denominator of the ratio in reduced form:
    -- the numerator and denominator have no common factor and the denominator
    -- is positive.
    denominator :: Ratio a -> a
    denominator (_ :% y) =  y
    #endif