content: {-# 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
  