{-# OPTIONS_GHC -Wno-orphans #-} module Data.Function.FastMemo.Ratio () where import Data.Function.FastMemo.Class (Memoizable (..)) import Data.Ratio (Ratio, denominator, numerator, (%)) instance (Integral a, Memoizable a) => Memoizable (Ratio a) where memoize :: forall b. (Ratio a -> b) -> Ratio a -> b memoize Ratio a -> b f = forall a b. Memoizable a => (a -> b) -> a -> b memoize (Ratio a -> b f forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b c. (a -> b -> c) -> (a, b) -> c uncurry forall a. Integral a => a -> a -> Ratio a (%)) forall b c a. (b -> c) -> (a -> b) -> a -> c . (\Ratio a x -> (forall a. Ratio a -> a numerator Ratio a x, forall a. Ratio a -> a denominator Ratio a x))