From 8e96de7eceab39ded51067789f42d7bd66479b6a Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Thu, 22 Aug 2024 20:14:03 +0200 Subject: [PATCH] doctest --- doctest.sh | 1 + effectful-core/src/Effectful/Labeled.hs | 18 ++++++++++++++++++ effectful/tests/LabeledTests.hs | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/doctest.sh b/doctest.sh index 7b9167c..38f2780 100755 --- a/doctest.sh +++ b/doctest.sh @@ -27,6 +27,7 @@ run_doctest() { -XLambdaCase \ -XMultiParamTypeClasses \ -XNoStarIsType \ + -XPolyKinds \ -XRankNTypes \ -XRecordWildCards \ -XRoleAnnotations \ diff --git a/effectful-core/src/Effectful/Labeled.hs b/effectful-core/src/Effectful/Labeled.hs index 277a094..641b847 100644 --- a/effectful-core/src/Effectful/Labeled.hs +++ b/effectful-core/src/Effectful/Labeled.hs @@ -22,6 +22,24 @@ import Effectful import Effectful.Dispatch.Static -- | Assign a label to an effect. +-- +-- The constructor is for sending labeled operations of a dynamically dispatched +-- effect to the handler: +-- +-- >>> import Effectful.Dispatch.Dynamic +-- +-- >>> :{ +-- data X :: Effect where +-- X :: X m Int +-- type instance DispatchOf X = Dynamic +-- :} +-- +-- >>> :{ +-- runPureEff . runLabeled @"x" (interpret_ $ \X -> pure 333) $ do +-- send $ Labeled @"x" X +-- :} +-- 333 +-- newtype Labeled (label :: k) (e :: Effect) :: Effect where -- | @since 2.4.0.0 Labeled :: forall label e m a. e m a -> Labeled label e m a diff --git a/effectful/tests/LabeledTests.hs b/effectful/tests/LabeledTests.hs index d1a24b6..8b084b3 100644 --- a/effectful/tests/LabeledTests.hs +++ b/effectful/tests/LabeledTests.hs @@ -51,7 +51,7 @@ test_labeledSend = runEff $ do data X :: Effect where X1 :: X m Int - X2 :: X m Int + X2 :: (X :> es, Labeled "x" X :> es) => X (Eff es) Int type instance DispatchOf X = Dynamic