-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Automatic disambiguation for extensible effects -- -- Please see the README on GitHub at -- https://github.com/re-xyr/cleff/tree/master/cleff-plugin#readme @package cleff-plugin @version 0.1.0.0 module Cleff.Plugin.Internal -- | Plugin is the compiler plugin data type. Try to avoid -- constructing one of these directly, and just modify some fields of -- defaultPlugin instead: this is to try and preserve source-code -- compatibility when we add fields to this. -- -- Nonetheless, this API is preliminary and highly likely to change in -- the future. data Plugin -- | A list of unique, unambiguous Haskell names in the format of -- (packageName, moduleName, identifier). type Names = [(String, String, String)] -- | Make a polysemy-plugin-style effect disambiguation plugin -- that applies to all the "element-of" typeclasses passed in. Each of -- the names passed in should have type k -> [k] -> -- Type where k can be either polymorphic or -- monomorphic. -- -- Some examples include: -- --
--   ("cleff", "Cleff.Internal.Rec", ":>")
--   ("polysemy", "Polysemy.Internal.Union", "Member")
--   ("effectful", "Effectful.Internal.Effect", ":>")
--   
-- -- You can see the source code for notes on the implementation of the -- plugin. makePlugin :: Names -> Plugin instance GHC.Classes.Eq Cleff.Plugin.Internal.OrdType instance GHC.Classes.Ord Cleff.Plugin.Internal.OrdType instance GHC.Show.Show Cleff.Plugin.Internal.FakedepWanted instance GHC.Show.Show Cleff.Plugin.Internal.FakedepGiven module Cleff.Plugin -- | The GHC typechecker plugin that disambiguates trivial uses of -- cleff effects. Refer to the README for more info. plugin :: Plugin