module Data.Range.Typed.Algebra.Range where import Control.Monad.Free import Data.Range.Typed.Algebra.Internal import Data.Range.Typed.Data import Data.Range.Typed.RangeInternal (exportRangeMerge, loadRanges) rangeAlgebra :: (Ord a) => Algebra RangeExprF [AnyRange a] rangeAlgebra :: forall a. Ord a => Algebra RangeExprF [AnyRange a] rangeAlgebra = RangeMerge a -> [AnyRange a] forall a. Eq a => RangeMerge a -> [AnyRange a] exportRangeMerge (RangeMerge a -> [AnyRange a]) -> (RangeExprF [AnyRange a] -> RangeMerge a) -> RangeExprF [AnyRange a] -> [AnyRange a] forall b c a. (b -> c) -> (a -> b) -> a -> c . (RangeExprF (RangeMerge a) -> RangeMerge a) -> Free RangeExprF (RangeMerge a) -> RangeMerge a forall (f :: * -> *) a. Functor f => (f a -> a) -> Free f a -> a iter RangeExprF (RangeMerge a) -> RangeMerge a forall a. Ord a => Algebra RangeExprF (RangeMerge a) rangeMergeAlgebra (Free RangeExprF (RangeMerge a) -> RangeMerge a) -> (RangeExprF [AnyRange a] -> Free RangeExprF (RangeMerge a)) -> RangeExprF [AnyRange a] -> RangeMerge a forall b c a. (b -> c) -> (a -> b) -> a -> c . RangeExprF (Free RangeExprF (RangeMerge a)) -> Free RangeExprF (RangeMerge a) forall (f :: * -> *) a. f (Free f a) -> Free f a Free (RangeExprF (Free RangeExprF (RangeMerge a)) -> Free RangeExprF (RangeMerge a)) -> (RangeExprF [AnyRange a] -> RangeExprF (Free RangeExprF (RangeMerge a))) -> RangeExprF [AnyRange a] -> Free RangeExprF (RangeMerge a) forall b c a. (b -> c) -> (a -> b) -> a -> c . ([AnyRange a] -> Free RangeExprF (RangeMerge a)) -> RangeExprF [AnyRange a] -> RangeExprF (Free RangeExprF (RangeMerge a)) forall a b. (a -> b) -> RangeExprF a -> RangeExprF b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap (RangeMerge a -> Free RangeExprF (RangeMerge a) forall (f :: * -> *) a. a -> Free f a Pure (RangeMerge a -> Free RangeExprF (RangeMerge a)) -> ([AnyRange a] -> RangeMerge a) -> [AnyRange a] -> Free RangeExprF (RangeMerge a) forall b c a. (b -> c) -> (a -> b) -> a -> c . [AnyRange a] -> RangeMerge a forall a (c :: (* -> *) -> Constraint). Ord a => [AnyRangeFor c a] -> RangeMerge a loadRanges)