parametric-functor 0.1.0.0 → 0.1.1.0
raw patch · 3 files changed
+62/−3 lines, 3 filesdep +transformersPVP ok
version bump matches the API change (PVP)
Dependencies added: transformers
API changes (from Hackage documentation)
+ Control.Monad.Trans.Class.Parametric: class (MonadTrans t, forall m x y. (Monad m, ParametricFunctor m, Coercible x y) => Coercible (t m x) (t m y)) => ParametricMonadTrans t
+ Control.Monad.Trans.Class.Parametric: instance (Control.Monad.Trans.Class.MonadTrans t, forall (m :: * -> *) x y. (GHC.Base.Monad m, Data.Functor.Parametric.ParametricFunctor m, GHC.Types.Coercible x y) => GHC.Types.Coercible (t m x) (t m y)) => Control.Monad.Trans.Class.Parametric.ParametricMonadTrans t
Files
CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for parametric-functor +## 0.1.1.0 -- 2024-01-15++* Add `ParametricMonadTrans`+ ## 0.1.0.0 -- 2024-01-13 * Initial (and hopefully final) release
parametric-functor.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: parametric-functor-version: 0.1.0.0+version: 0.1.1.0 synopsis: A known-parametric Functor typeclass description: As Oleg Grenrus [argued](http://oleg.fi/gists/posts/2019-07-31-fmap-coerce-coerce.html) in 2019,@@ -41,7 +41,9 @@ location: https://github.com/shlevy/parametric-functor library- exposed-modules: Data.Functor.Parametric- build-depends: base >= 4.12 && < 5+ exposed-modules:+ Control.Monad.Trans.Class.Parametric+ Data.Functor.Parametric+ build-depends: base >= 4.12 && < 5, transformers >= 0.2 && < 1.0 hs-source-dirs: src default-language: Haskell98
+ src/Control/Monad/Trans/Class/Parametric.hs view
@@ -0,0 +1,53 @@+-- Copyright 2024 Shea Levy+--+-- Licensed under the Apache License, Version 2.0 (the "License");+-- you may not use this file except in compliance with the License.+-- You may obtain a copy of the License at+--+-- http://www.apache.org/licenses/LICENSE-2.0+--+-- Unless required by applicable law or agreed to in writing, software+-- distributed under the License is distributed on an "AS IS" BASIS,+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+-- See the License for the specific language governing permissions and+-- limitations under the License.+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MonoLocalBinds #-}+{-# LANGUAGE QuantifiedConstraints #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE UnicodeSyntax #-}++{- |+Description : 'MonadTrans'formers that preserve t'ParametricFunctor'+Copyright : Copyright 2024 Shea Levy.+License : Apache-2.0+Maintainer : shea@shealevy.com+-}+module Control.Monad.Trans.Class.Parametric where++import Control.Monad.Trans.Class+import Data.Coerce+import Data.Functor.Parametric++-- | 'MonadTrans'formers that preserve t'ParametricFunctor'+class+ ( MonadTrans t+ , ∀ m x y+ . ( Monad m+ , ParametricFunctor m+ , Coercible x y+ )+ ⇒ Coercible (t m x) (t m y)+ ) ⇒+ ParametricMonadTrans t++instance+ ( MonadTrans t+ , ∀ m x y+ . ( Monad m+ , ParametricFunctor m+ , Coercible x y+ )+ ⇒ Coercible (t m x) (t m y)+ )+ ⇒ ParametricMonadTrans t