can-i-haz 0.3.1.0 → 0.3.1.1
raw patch · 5 files changed
+37/−13 lines, 5 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Control.Monad.Reader.Has: newtype ReaderT r (m :: k -> Type) (a :: k) :: forall k. () => Type -> k -> Type -> k -> Type
+ Control.Monad.Except.CoHas: (<$) :: Functor f => a -> f b -> f a
+ Control.Monad.Except.CoHas: class Monad m => MonadFail (m :: Type -> Type)
+ Control.Monad.Reader.Has: (<$) :: Functor f => a -> f b -> f a
+ Control.Monad.Reader.Has: class Monad m => MonadFail (m :: Type -> Type)
+ Control.Monad.Reader.Has: newtype ReaderT r (m :: Type -> Type) a
- Control.Monad.Except.CoHas: ExceptT :: m (Either e a) -> ExceptT e a
+ Control.Monad.Except.CoHas: ExceptT :: m (Either e a) -> ExceptT e (m :: Type -> Type) a
- Control.Monad.Except.CoHas: fail :: Monad m => String -> m a
+ Control.Monad.Except.CoHas: fail :: MonadFail m => String -> m a
- Control.Monad.Except.CoHas: fix :: () => (a -> a) -> a
+ Control.Monad.Except.CoHas: fix :: (a -> a) -> a
- Control.Monad.Except.CoHas: infixl 1 >>
+ Control.Monad.Except.CoHas: infixl 1 >>=
- Control.Monad.Except.CoHas: mapExcept :: () => (Either e a -> Either e' b) -> Except e a -> Except e' b
+ Control.Monad.Except.CoHas: mapExcept :: (Either e a -> Either e' b) -> Except e a -> Except e' b
- Control.Monad.Except.CoHas: mapExceptT :: () => (m (Either e a) -> n (Either e' b)) -> ExceptT e m a -> ExceptT e' n b
+ Control.Monad.Except.CoHas: mapExceptT :: (m (Either e a) -> n (Either e' b)) -> ExceptT e m a -> ExceptT e' n b
- Control.Monad.Except.CoHas: runExcept :: () => Except e a -> Either e a
+ Control.Monad.Except.CoHas: runExcept :: Except e a -> Either e a
- Control.Monad.Except.CoHas: runExceptT :: () => ExceptT e m a -> m (Either e a)
+ Control.Monad.Except.CoHas: runExceptT :: ExceptT e m a -> m (Either e a)
- Control.Monad.Except.CoHas: type SuccessfulSearch option sum path = (Search option (Rep sum) ~ 'Found path, GCoHas path option (Rep sum))
+ Control.Monad.Except.CoHas: type SuccessfulSearch option sum path = (Search option (Rep sum) ~ 'Found path, GCoHas path option (Rep sum))
- Control.Monad.Except.CoHas: withExcept :: () => (e -> e') -> Except e a -> Except e' a
+ Control.Monad.Except.CoHas: withExcept :: (e -> e') -> Except e a -> Except e' a
- Control.Monad.Except.CoHas: withExceptT :: Functor m => (e -> e') -> ExceptT e m a -> ExceptT e' m a
+ Control.Monad.Except.CoHas: withExceptT :: forall (m :: Type -> Type) e e' a. Functor m => (e -> e') -> ExceptT e m a -> ExceptT e' m a
- Control.Monad.Reader.Has: ReaderT :: (r -> m a) -> ReaderT r
+ Control.Monad.Reader.Has: ReaderT :: (r -> m a) -> ReaderT r (m :: Type -> Type) a
- Control.Monad.Reader.Has: [runReaderT] :: ReaderT r -> r -> m a
+ Control.Monad.Reader.Has: [runReaderT] :: ReaderT r (m :: Type -> Type) a -> r -> m a
- Control.Monad.Reader.Has: fail :: Monad m => String -> m a
+ Control.Monad.Reader.Has: fail :: MonadFail m => String -> m a
- Control.Monad.Reader.Has: fix :: () => (a -> a) -> a
+ Control.Monad.Reader.Has: fix :: (a -> a) -> a
- Control.Monad.Reader.Has: infixl 1 >>
+ Control.Monad.Reader.Has: infixl 1 >>=
- Control.Monad.Reader.Has: mapReader :: () => (a -> b) -> Reader r a -> Reader r b
+ Control.Monad.Reader.Has: mapReader :: (a -> b) -> Reader r a -> Reader r b
- Control.Monad.Reader.Has: mapReaderT :: () => (m a -> n b) -> ReaderT r m a -> ReaderT r n b
+ Control.Monad.Reader.Has: mapReaderT :: (m a -> n b) -> ReaderT r m a -> ReaderT r n b
- Control.Monad.Reader.Has: runReader :: () => Reader r a -> r -> a
+ Control.Monad.Reader.Has: runReader :: Reader r a -> r -> a
- Control.Monad.Reader.Has: type SuccessfulSearch part record path = (Search part (Rep record) ~ 'Found path, GHas path part (Rep record))
+ Control.Monad.Reader.Has: type SuccessfulSearch part record path = (Search part (Rep record) ~ 'Found path, GHas path part (Rep record))
- Control.Monad.Reader.Has: withReader :: () => (r' -> r) -> Reader r a -> Reader r' a
+ Control.Monad.Reader.Has: withReader :: (r' -> r) -> Reader r a -> Reader r' a
- Control.Monad.Reader.Has: withReaderT :: () => (r' -> r) -> ReaderT r m a -> ReaderT r' m a
+ Control.Monad.Reader.Has: withReaderT :: forall r' r (m :: Type -> Type) a. (r' -> r) -> ReaderT r m a -> ReaderT r' m a
Files
- ChangeLog.md +4/−0
- can-i-haz.cabal +4/−4
- src/Control/Monad/Except/CoHas.hs +13/−4
- src/Control/Monad/Reader/Has.hs +13/−4
- src/Data/Path.hs +3/−1
ChangeLog.md view
@@ -1,5 +1,9 @@ # Changelog for can-i-haz +## 0.3.1.1++* Fix certain warnings with newer GHC for cleaner builds.+ ## 0.3.1.0 * Add `liftMaybe` utility function to `Control.Monad.Except.CoHas`.
can-i-haz.cabal view
@@ -1,13 +1,13 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.31.2.+-- This file has been generated from package.yaml by hpack version 0.35.0. -- -- see: https://github.com/sol/hpack ----- hash: af1810287bc5b23d221bbd0e94f0e0c3016a9c1269cf8169b84688faebfa71e5+-- hash: b0a73621ab2689afb20ff048f332f12f4e3d17664e2dcc956e880c8478bcb915 name: can-i-haz-version: 0.3.1.0+version: 0.3.1.1 synopsis: Generic implementation of the Has and CoHas patterns description: Please see the README on GitHub at <https://github.com/0xd34df00d/can-i-haz#readme> category: Control@@ -15,7 +15,7 @@ bug-reports: https://github.com/0xd34df00d/can-i-haz/issues author: Georg Rudoy maintainer: 0xd34df00d@gmail.com-copyright: 2019 Georg Rudoy+copyright: 2019-2022 Georg Rudoy license: BSD3 license-file: LICENSE build-type: Simple
src/Control/Monad/Except/CoHas.hs view
@@ -1,7 +1,15 @@-{-# LANGUAGE TypeOperators, DataKinds, PolyKinds, TypeFamilies, ConstraintKinds #-}-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, UndecidableInstances, FlexibleContexts #-}-{-# LANGUAGE ScopedTypeVariables, DefaultSignatures #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DefaultSignatures #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-} {-# LANGUAGE Safe #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE UndecidableInstances #-} {-| Description: Generic implementation of the CoHas injection pattern (dual to Has)@@ -90,12 +98,13 @@ import qualified Control.Monad.Except as M import Control.Monad.Except as X hiding(throwError, liftEither) import Data.Bifunctor+import Data.Kind import Data.Proxy import GHC.Generics import Data.Path -type family Search option (g :: k -> *) :: MaybePath where+type family Search option (g :: k -> Type) :: MaybePath where Search option (K1 _ option) = 'Found 'Here Search option (K1 _ other) = 'NotFound Search option (M1 _ _ x) = Search option x
src/Control/Monad/Reader/Has.hs view
@@ -1,7 +1,15 @@-{-# LANGUAGE TypeOperators, DataKinds, PolyKinds, TypeFamilies, ConstraintKinds #-}-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, UndecidableInstances, FlexibleContexts #-}-{-# LANGUAGE ScopedTypeVariables, DefaultSignatures #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DefaultSignatures #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-} {-# LANGUAGE Safe #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE UndecidableInstances #-} {-| Description : Generic implementation of the Has pattern@@ -102,12 +110,13 @@ import qualified Control.Monad.Reader as M import Control.Monad.Reader as X hiding(ask, asks, reader)+import Data.Kind import Data.Proxy import GHC.Generics import Data.Path -type family Search part (g :: k -> *) :: MaybePath where+type family Search part (g :: k -> Type) :: MaybePath where Search part (K1 _ part) = 'Found 'Here Search part (K1 _ other) = 'NotFound Search part (M1 _ _ x) = Search part x
src/Data/Path.hs view
@@ -1,4 +1,6 @@-{-# LANGUAGE DataKinds, TypeFamilies #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE Safe #-}+{-# LANGUAGE TypeFamilies #-} module Data.Path where