{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
{-# LANGUAGE CPP #-}
module TypeErrors where
-- $setup
-- >>> default ()
-- >>> :set -package polysemy-plugin
-- ...
-- >>> :set -fplugin=Polysemy.Plugin
-- >>> :m +Polysemy
-- >>> :m +Polysemy.State
-- >>> :m +Polysemy.Reader
-- >>> :m +Data.Maybe
--------------------------------------------------------------------------------
-- |
-- >>> :{
-- existsKV :: Member (State (Maybe Int)) r => Sem r Bool
-- existsKV = isJust get
-- :}
-- ...
-- ... Couldn't match expected type ...Sem r Bool... with actual type ...Bool...
-- ...
-- ... Couldn't match expected type...Maybe a0...
-- ... with actual type...Sem r0 s0...
-- ...
missingFmap = ()
--------------------------------------------------------------------------------
-- |
-- >>> :{
-- insertSome :: ∀ e1 e2 s r a . Sem (e1 ': e2 ': r) a -> Sem (e1 ': e2 ': State s ': r) a
-- insertSome = insertAt
-- :}
-- ...
-- ... insertAt: You must provide the index ...
-- ...
insertAtUnprovidedIndex = ()
#if __GLASGOW_HASKELL__ < 902
--------------------------------------------------------------------------------
-- |
-- >>> :{
-- insertSome :: Sem (e1 : e2 : e3 : e4 : r) a -> Sem (e1 : e2 : Reader i : e3 : e4 : r) a
-- insertSome = insertAt @1
-- :}
-- ...
-- ...insertAt: Failed to insert effects at index 1
-- ...
-- ... before ...
-- ...'[e1]
-- ... after ...
-- ...e2 : e3 : e4 : r
-- ...Actual ...
-- ...e1 : e2 : Reader i : e3 : e4 : r
-- ...
insertAtWrongIndex = ()
--------------------------------------------------------------------------------
-- |
-- Note: The /Actual/ row doesn't match the return type because of the 'raiseUnder'.
-- >>> :{
-- insertSome :: Sem (e1 : r) a -> Sem (e1 : e2 : State s : e3 : Reader i : e4 : r) a
-- insertSome = raiseUnder . insertAt @2 . raise2Under
-- :}
-- ...
-- ...insertAt: Failed to insert effects at index 2
-- ...
-- ... before ...
-- ...'[e1, State s]
-- ... after ...
-- ...e30 : r0
-- ...Actual ...
-- ...e1 : State s : e3 : Reader i : e4 : r
-- ...
insertAtAndRaiseWrongIndex = ()
#endif