module InsertSpec where import Polysemy.State (State) import Polysemy.Reader (Reader) import Polysemy.Internal (insertAt) import Polysemy import Test.Hspec insertAtWithIndex :: Sem (e1 : e2 : e3 : e4 : r) a -> Sem (e1 : e2 : Reader i : e3 : e4 : r) a insertAtWithIndex = insertAt @2 insertAtAndRaiseUnder :: Sem (e1 : r) a -> Sem (e1 : e2 : State s : e3 : Reader i : e4 : r) a insertAtAndRaiseUnder = raise2Under . insertAt @2 . raiseUnder insertAtEmpty :: Sem (e1 : e2 : r) a -> Sem (e1 : e2 : r) a insertAtEmpty = insertAt @2 spec :: Spec spec = parallel $ do describe "insert" $ do it "insert" $ do 1 `shouldBe` 1