module Sound.MIDI.Monoid where import Data.Foldable (foldMap, ) import Data.Monoid (Monoid, mappend, ) import Data.Semigroup (Semigroup, sconcat, ) import Data.List.NonEmpty (NonEmpty, ) infixr 5 +#+ (+#+) :: Monoid m => m -> m -> m +#+ :: m -> m -> m (+#+) = m -> m -> m forall a. Monoid a => a -> a -> a mappend genAppend :: (Monoid m) => (m -> a) -> (a -> m) -> a -> a -> a genAppend :: (m -> a) -> (a -> m) -> a -> a -> a genAppend m -> a cons a -> m decons a x a y = m -> a cons (m -> a) -> m -> a forall a b. (a -> b) -> a -> b $ m -> m -> m forall a. Monoid a => a -> a -> a mappend (a -> m decons a x) (a -> m decons a y) genConcat :: (Monoid m) => (m -> a) -> (a -> m) -> [a] -> a genConcat :: (m -> a) -> (a -> m) -> [a] -> a genConcat m -> a cons a -> m decons = m -> a cons (m -> a) -> ([a] -> m) -> [a] -> a forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> m) -> [a] -> m forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap a -> m decons nonEmptyConcat :: (Semigroup m) => (m -> a) -> (a -> m) -> NonEmpty a -> a nonEmptyConcat :: (m -> a) -> (a -> m) -> NonEmpty a -> a nonEmptyConcat m -> a cons a -> m decons = m -> a cons (m -> a) -> (NonEmpty a -> m) -> NonEmpty a -> a forall b c a. (b -> c) -> (a -> b) -> a -> c . NonEmpty m -> m forall a. Semigroup a => NonEmpty a -> a sconcat (NonEmpty m -> m) -> (NonEmpty a -> NonEmpty m) -> NonEmpty a -> m forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> m) -> NonEmpty a -> NonEmpty m forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap a -> m decons