freelude 0.1.0.1 → 0.3.1.0
raw patch · 5 files changed
+167/−103 lines, 5 filesdep +bytestringdep +textdep ~basedep ~doctestdep ~indextypePVP ok
version bump matches the API change (PVP)
Dependencies added: bytestring, text
Dependency ranges changed: base, doctest, indextype
API changes (from Hackage documentation)
- Freelude.Impl.Category: instance (GHC.Arr.Ix i, GHC.Num.Num i) => Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) (GHC.Arr.Array i))
- Freelude.Impl.Category: instance (GHC.Arr.Ix i, GHC.Num.Num i) => Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) (GHC.Arr.Array i))
- Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (* -> *) (Data.Either.Either a))
- Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Functor.Identity.Identity)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.List.NonEmpty.NonEmpty)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.First)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Last)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Max)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Min)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Option)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Tree.Tree)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Base.Maybe)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Types.IO)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (* -> *) [])
- Freelude.Impl.Category: instance Freelude.Impl.Category.Arr (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Base.Maybe) Freelude.Impl.Category.FunctionP)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Arr (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP (* -> *) []) Freelude.Impl.Category.FunctionP)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Const (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Base.Maybe) Freelude.Impl.Category.FunctionP)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Const (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP (* -> *) []) Freelude.Impl.Category.FunctionP)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) (Data.Either.Either a))
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Functor.Identity.Identity)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.List.NonEmpty.NonEmpty)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.First)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Last)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Max)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Min)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Option)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Tree.Tree)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Base.Maybe)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Types.IO)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) [])
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP * (Freelude.Impl.Category.ConstantP a))
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor cat p => Freelude.Impl.Category.Functor (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Base.Maybe) cat) p
- Freelude.Impl.Category: instance Freelude.Impl.Category.Functor cat p => Freelude.Impl.Category.Functor (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP (* -> *) []) cat) p
- Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) (Data.Either.Either a))
- Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Functor.Identity.Identity)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.List.NonEmpty.NonEmpty)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.First)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Last)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Max)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Min)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Option)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Tree.Tree)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Base.Maybe)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Types.IO)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (* -> *) [])
- Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (* -> *) (Data.Either.Either a))
- Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Functor.Identity.Identity)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.List.NonEmpty.NonEmpty)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.First)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Last)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Max)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Min)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Option)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Tree.Tree)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Base.Maybe)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Types.IO)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (* -> *) [])
- Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) (Data.Either.Either a))
- Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Functor.Identity.Identity)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.List.NonEmpty.NonEmpty)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.First)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Last)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Max)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Min)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Semigroup.Option)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) Data.Tree.Tree)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Base.Maybe)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Types.IO)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (* -> *) [])
- Freelude.Impl.Category: instance Freelude.Impl.Category.Semigroupoid p => Freelude.Impl.Category.Category (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Base.Maybe) p)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Semigroupoid p => Freelude.Impl.Category.Category (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP (* -> *) []) p)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Semigroupoid p => Freelude.Impl.Category.Semigroupoid (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Base.Maybe) p)
- Freelude.Impl.Category: instance Freelude.Impl.Category.Semigroupoid p => Freelude.Impl.Category.Semigroupoid (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP (* -> *) []) p)
- Freelude.Impl.Category: instance GHC.Arr.Ix i => Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (* -> *) (GHC.Arr.Array i))
- Freelude.Impl.Category: instance forall k (a :: k). Freelude.Impl.Category.EmptyConstraint k a
- Freelude.Impl.Category: instance forall k (b :: k). GHC.Classes.Ord (Freelude.Impl.ToKind.ToType k * b) => Freelude.Impl.Category.SetDstC k b
- Freelude.Impl.ExoFunctor: instance Freelude.Impl.ExoFunctor.ExoFunctor p Freelude.Impl.Category.FunctionP => Freelude.Impl.ExoFunctor.ExoFunctor (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP (* -> *) GHC.Base.Maybe) p) Freelude.Impl.Category.FunctionP
- Freelude.Impl.ExoFunctor: instance Freelude.Impl.ExoFunctor.ExoFunctor p Freelude.Impl.Category.FunctionP => Freelude.Impl.ExoFunctor.ExoFunctor (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP (* -> *) []) p) Freelude.Impl.Category.FunctionP
- Freelude.Impl.MonoidAsCategory: instance (a :: *) ~~ (Data.Void.Void :: *) => Freelude.Impl.MonoidAsCategory.VoidC a
+ Freelude.Impl.Category: instance (GHC.Arr.Ix i, GHC.Num.Num i) => Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (GHC.Arr.Array i))
+ Freelude.Impl.Category: instance (GHC.Arr.Ix i, GHC.Num.Num i) => Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (GHC.Arr.Array i))
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP (Data.Either.Either a))
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP Data.Functor.Identity.Identity)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP Data.List.NonEmpty.NonEmpty)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.First)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Last)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Max)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Min)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Option)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP Data.Tree.Tree)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP GHC.Base.Maybe)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP GHC.Types.IO)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Apply (Freelude.Impl.Category.BasicFunctorP [])
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Arr (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP GHC.Base.Maybe) Freelude.Impl.Category.FunctionP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Arr (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP []) Freelude.Impl.Category.FunctionP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Const (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP GHC.Base.Maybe) Freelude.Impl.Category.FunctionP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Const (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP []) Freelude.Impl.Category.FunctionP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (Data.Either.Either a))
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (Freelude.Impl.Category.ConstantP a))
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP Data.Functor.Identity.Identity)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP Data.List.NonEmpty.NonEmpty)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.First)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Last)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Max)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Min)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Option)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP Data.Tree.Tree)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP GHC.Base.Maybe)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP GHC.Types.IO)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP [])
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.ByteStringP 'Freelude.Impl.Category.LazyP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.ByteStringP 'Freelude.Impl.Category.StrictP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.TextP 'Freelude.Impl.Category.LazyP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.TextP 'Freelude.Impl.Category.StrictP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor cat p => Freelude.Impl.Category.Functor (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP GHC.Base.Maybe) cat) p
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Functor cat p => Freelude.Impl.Category.Functor (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP []) cat) p
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP (Data.Either.Either a))
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP Data.Functor.Identity.Identity)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP Data.List.NonEmpty.NonEmpty)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.First)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Last)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Max)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Min)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Option)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP Data.Tree.Tree)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP GHC.Base.Maybe)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP GHC.Types.IO)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.BasicFunctorP [])
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.ByteStringP 'Freelude.Impl.Category.LazyP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.ByteStringP 'Freelude.Impl.Category.StrictP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.TextP 'Freelude.Impl.Category.LazyP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Lift (Freelude.Impl.Category.TextP 'Freelude.Impl.Category.StrictP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP (Data.Either.Either a))
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP Data.Functor.Identity.Identity)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP Data.List.NonEmpty.NonEmpty)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.First)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Last)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Max)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Min)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Option)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP Data.Tree.Tree)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP GHC.Base.Maybe)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP GHC.Types.IO)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.BasicFunctorP [])
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.ByteStringP 'Freelude.Impl.Category.LazyP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.ByteStringP 'Freelude.Impl.Category.StrictP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.TextP 'Freelude.Impl.Category.LazyP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Monad (Freelude.Impl.Category.TextP 'Freelude.Impl.Category.StrictP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP (Data.Either.Either a))
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP Data.Functor.Identity.Identity)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP Data.List.NonEmpty.NonEmpty)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.First)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Last)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Max)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Min)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP Data.Semigroup.Option)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP Data.Tree.Tree)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP GHC.Base.Maybe)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP GHC.Types.IO)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.BasicFunctorP [])
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.ByteStringP 'Freelude.Impl.Category.LazyP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.ByteStringP 'Freelude.Impl.Category.StrictP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.TextP 'Freelude.Impl.Category.LazyP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Pure (Freelude.Impl.Category.TextP 'Freelude.Impl.Category.StrictP)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Semigroupoid p => Freelude.Impl.Category.Category (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP GHC.Base.Maybe) p)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Semigroupoid p => Freelude.Impl.Category.Category (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP []) p)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Semigroupoid p => Freelude.Impl.Category.Semigroupoid (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP GHC.Base.Maybe) p)
+ Freelude.Impl.Category: instance Freelude.Impl.Category.Semigroupoid p => Freelude.Impl.Category.Semigroupoid (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP []) p)
+ Freelude.Impl.Category: instance GHC.Arr.Ix i => Freelude.Impl.Category.Functor Freelude.Impl.Category.FunctionP (Freelude.Impl.Category.BasicFunctorP (GHC.Arr.Array i))
+ Freelude.Impl.Category: instance forall k (a :: k). Freelude.Impl.Category.EmptyConstraint a
+ Freelude.Impl.Category: instance forall k (b :: k). GHC.Classes.Ord (Freelude.Impl.ToKind.ToType b) => Freelude.Impl.Category.SetDstC b
+ Freelude.Impl.ExoFunctor: instance Freelude.Impl.ExoFunctor.ExoFunctor p Freelude.Impl.Category.FunctionP => Freelude.Impl.ExoFunctor.ExoFunctor (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP GHC.Base.Maybe) p) Freelude.Impl.Category.FunctionP
+ Freelude.Impl.ExoFunctor: instance Freelude.Impl.ExoFunctor.ExoFunctor p Freelude.Impl.Category.FunctionP => Freelude.Impl.ExoFunctor.ExoFunctor (Freelude.Impl.Category.FunctorCategoryP (Freelude.Impl.Category.BasicFunctorP []) p) Freelude.Impl.Category.FunctionP
+ Freelude.Impl.MonoidAsCategory: instance a ~ Data.Void.Void => Freelude.Impl.MonoidAsCategory.VoidC a
Files
- README.md +0/−1
- freelude.cabal +73/−57
- src/Freelude.hs +24/−0
- src/Freelude/Impl/Category.hs +70/−4
- test/Test.hs +0/−41
− README.md
@@ -1,1 +0,0 @@-# freelude
freelude.cabal view
@@ -1,64 +1,80 @@-name: freelude-version: 0.1.0.1-synopsis: A generalisation of the Category->Functor->Applicative->Monad hierarchy and more-description:- This package generalises classes like Category, Functor etc to allow them to be defined on more data types,- for example, tuples and sets, whilst still attempting to maintain backward compatability.+-- This file has been generated from package.yaml by hpack version 0.20.0.+--+-- see: https://github.com/sol/hpack+--+-- hash: 2d43b77cfc9355a6259d26ff689dca336df814a1980204ab158ceab224787d63 - See the module "Freelude" for more details.-homepage: https://github.com/clintonmead/freelude#readme-license: BSD3-license-file: LICENSE-author: Clinton Mead-maintainer: clintonmead@gmail.com-copyright: Copyright: (c) 2017 Clinton Mead-category: Web-build-type: Simple-extra-source-files: README.md-cabal-version: >=1.10-tested-with: GHC == 8.2+name: freelude+version: 0.3.1.0+synopsis: A generalisation of the Category->Functor->Applicative->Monad hierarchy and more+description: This package generalises classes like Category, Functor etc to allow them to be defined on more data types, for example, tuples and sets, whilst still attempting to maintain backward compatability.+ .+ See the module "Freelude" for more details.+category: Prelude+homepage: https://github.com/clintonmead/freelude#readme+bug-reports: https://github.com/clintonmead/freelude/issues+author: Clinton Mead+maintainer: clintonmead@gmail.com+copyright: Copyright: (c) 2018 Clinton Mead+license: BSD3+license-file: LICENSE+build-type: Simple+cabal-version: >= 1.10++source-repository head+ type: git+ location: https://github.com/clintonmead/freelude+ library- hs-source-dirs: src+ hs-source-dirs:+ src+ ghc-options: -Wall+ build-depends:+ array+ , base <99+ , bytestring+ , containers+ , indextype+ , text+ , transformers exposed-modules:- Freelude- Freelude.FunctionRestrictedFunctor- Freelude.Impl.Category- Freelude.Impl.CategoryAsMonoid- Freelude.Impl.ExoFunctor- Freelude.Impl.MonoidAsCategory- Freelude.Impl.MakeFunctor- Freelude.Impl.RestrictedFunctor- Freelude.Impl.ToKind- build-depends: base == 4.10.*, indextype == 0.3.*, containers, transformers, array- default-language: Haskell2010- ghc-options: -Wall -fprint-explicit-kinds+ Freelude+ Freelude.FunctionRestrictedFunctor+ Freelude.Impl.Category+ Freelude.Impl.CategoryAsMonoid+ Freelude.Impl.ExoFunctor+ Freelude.Impl.MakeFunctor+ Freelude.Impl.MonoidAsCategory+ Freelude.Impl.RestrictedFunctor+ Freelude.Impl.ToKind+ other-modules:+ Paths_freelude+ default-language: Haskell2010 test-suite test- type: exitcode-stdio-1.0- hs-source-dirs: test, src- main-is: Test.hs+ type: exitcode-stdio-1.0+ main-is: DocTest.hs+ hs-source-dirs:+ test+ src+ build-depends:+ array+ , base <99+ , bytestring+ , containers+ , doctest+ , indextype+ , text+ , transformers other-modules:- Freelude- Freelude.FunctionRestrictedFunctor- Freelude.Impl.Category- Freelude.Impl.CategoryAsMonoid- Freelude.Impl.ExoFunctor- Freelude.Impl.MonoidAsCategory- Freelude.Impl.MakeFunctor- Freelude.Impl.RestrictedFunctor- Freelude.Impl.ToKind- build-depends: base == 4.10.*, indextype == 0.3.*, containers, transformers, array- ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N- default-language: Haskell2010--test-suite doctests- type: exitcode-stdio-1.0- hs-source-dirs: test, src- ghc-options: -threaded- main-is: DocTest.hs- build-depends: base == 4.10.*, doctest >= 0.8+ Freelude+ Freelude.FunctionRestrictedFunctor+ Freelude.Impl.Category+ Freelude.Impl.CategoryAsMonoid+ Freelude.Impl.ExoFunctor+ Freelude.Impl.MakeFunctor+ Freelude.Impl.MonoidAsCategory+ Freelude.Impl.RestrictedFunctor+ Freelude.Impl.ToKind+ Paths_freelude default-language: Haskell2010--source-repository head- type: git- location: https://github.com/clintonmead/freelude
src/Freelude.hs view
@@ -143,6 +143,7 @@ >>> :set -XTypeFamilies >>> :set -XFlexibleContexts+>>> :set -XTypeInType >>> fmap (*3) (1,2) (3,6) @@ -165,6 +166,18 @@ Note that both in the case of sets and unboxed arrays, ordinary 'Prelude.Functor' instances can not be defined for them as there are constraints on their parameters. +And finally, we can even define functors over monomorphic containers+like 'ByteString' and 'Text':++>>> Data.Char.toUpper <$> "Hello World"+"HELLO WORLD"++>>> Data.Char.toUpper <$> (Data.Text.pack "Hello World")+"HELLO WORLD"++>>> Data.Char.toUpper <$> (Data.Text.Lazy.pack "Hello World")+"HELLO WORLD"+ We also further generalise 'Functor'. Instead of thinking of 'Functor' as a function between functions, we think of it as a function between categories. So `fmap` can be defined on other categories.@@ -179,6 +192,17 @@ >>> f_l <*> [Just 3, Nothing] [Just 5,Nothing,Just 9,Nothing,Just 7,Nothing]++GHC even doesn't complain when we try to assert the function laws,+as long as we @AllowAmbiguousTypes@.++>>> :set -XAllowAmbiguousTypes+>>> :{+let+ eqT :: a -> a -> ()+ eqT _ _ = ()+ checkLaws x y = (fmap x . fmap y) `eqT` (fmap (x . y))+:} == Applicatives
src/Freelude/Impl/Category.hs view
@@ -65,6 +65,14 @@ import Data.Array.IArray (IArray) import Data.Array.Unboxed (UArray) +import qualified Data.Text as StrictText+import qualified Data.Text.Lazy as LazyText++import qualified Data.ByteString as StrictByteString+import qualified Data.ByteString.Lazy as LazyByteString++import Data.Word (Word8)+ type family CategoryT (p :: Type) (a :: Type) (b :: Type) = (f :: Type) | f -> p a b type family ExoCategoryT (p :: Type) (a :: Type) (b :: Type) = (f :: Type) | f -> p a b type family CategorySrcC' (p :: Type) :: Maybe (Type -> Constraint)@@ -326,8 +334,6 @@ type FunctorSrcC p a = FromMaybeConstraintFunc (FunctorSrcC' p) a type FunctorDstC p a = FromMaybeConstraintFunc (FunctorDstC' p) a ---type FunctorC cat p a b ra rb = (ra ~ FunctorT p a, rb ~ FunctorT p b, CategoryC cat a b, CategoryC cat ra rb, FunctorSrcC p a, FunctorDstC p b)- class Semigroupoid cat => Functor cat p where fmap :: (ra ~ FunctorT p a, rb ~ FunctorT p b, CategoryC cat a b, CategoryC cat ra rb, FunctorSrcC p a, FunctorDstC p b) =>@@ -336,8 +342,6 @@ default fmap :: (Lift p, Pure p, ra ~ FunctorT p a, rb ~ FunctorT p b, CategoryC cat a b, CategoryC cat ra rb, FunctorSrcC p a, FunctorDstC p b, cat ~ FunctionP, FunctorSrcC' p ~ 'Nothing, FunctorDstC' p ~ 'Nothing) => CategoryT cat a b -> CategoryT cat ra rb--- (Applicative p, cat ~ FunctionP, ra ~ FunctorT p a, rb ~ FunctorT p b, CategoryC cat a b, CategoryC cat ra rb, FunctorSrcC' p ~ 'Nothing, FunctorDstC' p ~ 'Nothing) =>--- CategoryT cat a b -> CategoryT cat ra rb fmap f x = liftA2 (const f) (pure x) x type UnconstrainedFunctor cat p = (Functor cat p, FunctorSrcC' p ~ 'Nothing, FunctorDstC' p ~ 'Nothing)@@ -567,6 +571,68 @@ instance Monad (BasicFunctorP First) where (>>=) = (Prelude.>>=) (>>) = (Prelude.>>)++data StrictOrLazyP = StrictP | LazyP++data TextP (p :: StrictOrLazyP)+type instance FunctorSrcC' (TextP _) = 'Just ((~) Char)+type instance FunctorDstC' (TextP _) = 'Just ((~) Char)++type instance FunctorT (TextP 'StrictP) Char = StrictText.Text+instance Functor FunctionP (TextP 'StrictP) where+ fmap = StrictText.map+instance Pure (TextP 'StrictP) where+ pure = StrictText.singleton+instance Lift (TextP 'StrictP) where+ -- Just go to and from lists. Slow but correct+ -- This can probably be improved+ liftA2 f x y = StrictText.pack (liftA2 f (StrictText.unpack x) (StrictText.unpack y))+instance Monad (TextP 'StrictP) where+ -- Also going through lists. I'm quite sure this can be improved.+ x >>= f = StrictText.pack (StrictText.unpack x >>= (StrictText.unpack . f))++type instance FunctorT (TextP 'LazyP) Char = LazyText.Text+instance Functor FunctionP (TextP 'LazyP) where+ fmap = LazyText.map+instance Pure (TextP 'LazyP) where+ pure = LazyText.singleton+instance Lift (TextP 'LazyP) where+ -- Just go to and from lists. Slow but correct+ -- This can probably be improved+ liftA2 f x y = LazyText.pack (liftA2 f (LazyText.unpack x) (LazyText.unpack y))+instance Monad (TextP 'LazyP) where+ -- Also going through lists. I'm quite sure this can be improved.+ x >>= f = LazyText.pack (LazyText.unpack x >>= (LazyText.unpack . f))++data ByteStringP (p :: StrictOrLazyP)+type instance FunctorSrcC' (ByteStringP _) = 'Just ((~) Word8)+type instance FunctorDstC' (ByteStringP _) = 'Just ((~) Word8)++type instance FunctorT (ByteStringP 'StrictP) Word8 = StrictByteString.ByteString+instance Functor FunctionP (ByteStringP 'StrictP) where+ fmap = StrictByteString.map+instance Pure (ByteStringP 'StrictP) where+ pure = StrictByteString.singleton+instance Lift (ByteStringP 'StrictP) where+ -- Just go to and from lists. Slow but correct+ -- This can probably be improved+ liftA2 f x y = StrictByteString.pack (liftA2 f (StrictByteString.unpack x) (StrictByteString.unpack y))+instance Monad (ByteStringP 'StrictP) where+ -- Also going through lists. I'm quite sure this can be improved.+ x >>= f = StrictByteString.pack (StrictByteString.unpack x >>= (StrictByteString.unpack . f))++type instance FunctorT (ByteStringP 'LazyP) Word8 = LazyByteString.ByteString+instance Functor FunctionP (ByteStringP 'LazyP) where+ fmap = LazyByteString.map+instance Pure (ByteStringP 'LazyP) where+ pure = LazyByteString.singleton+instance Lift (ByteStringP 'LazyP) where+ -- Just go to and from lists. Slow but correct+ -- This can probably be improved+ liftA2 f x y = LazyByteString.pack (liftA2 f (LazyByteString.unpack x) (LazyByteString.unpack y))+instance Monad (ByteStringP 'LazyP) where+ -- Also going through lists. I'm quite sure this can be improved.+ x >>= f = LazyByteString.pack (LazyByteString.unpack x >>= (LazyByteString.unpack . f)) -- Arrays
− test/Test.hs
@@ -1,41 +0,0 @@-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE AllowAmbiguousTypes #-}-{-# LANGUAGE TypeInType #-}-{-# OPTIONS_GHC -Wno-missing-signatures #-}--module Main where--import Freelude.Impl.Category-import Freelude.Impl.ExoFunctor-import Prelude hiding ((.), fmap, pure, (=<<))--main :: IO ()-main = pure ()--f1 :: (IsSemigroupoid t1 p a2 a3, IsSemigroupoid t2 p a1 a2, IsSemigroupoid t3 p a1 a3) => t1 -> t2 -> t3-f1 x y = x . y-f1' x y = x . y--f2 :: (IsSemigroupoid t1 p a3 a4, IsSemigroupoid t2 p a2 a3, IsSemigroupoid t3 p a1 a2, IsSemigroupoid t4 p a1 a4) => t1 -> t2 -> t3 -> t4-f2 x y z = x . y . z-f2' x y z = x . y . z--f3 x y = fmap x . fmap y-f3' x y = fmap x . fmap y--f4 x y = fmap (x . y)-f4' x y = fmap (x . y)--g :: a -> a -> a-g = undefined--f5 x y = g (f3 x y) (f4 x y)--f6 x y = exomap x . exomap y-f6' x y = exomap x . exomap y--f7 x y = exomap (x . y)-f7' x y = exomap (x . y)--f8 x y = g (f6 x y) (f7 x y)