Skip to content
This repository was archived by the owner on Apr 1, 2025. It is now read-only.

Commit 3438e47

Browse files
author
Patrick Thomson
committed
Fix effects in semantic-core.
1 parent f3bc363 commit 3438e47

File tree

4 files changed

+25
-25
lines changed

4 files changed

+25
-25
lines changed

semantic-core/src/Control/Effect/Readline.hs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import Control.Effect.Sum
2424
import Control.Monad
2525
import Control.Monad.IO.Class
2626
import Control.Monad.Trans.Class
27-
import Data.Coerce
2827
import Data.Int
2928
import Data.String
3029
import Data.Text.Prettyprint.Doc
@@ -34,17 +33,17 @@ import System.Directory
3433
import System.FilePath
3534

3635
data Readline (m :: * -> *) k
37-
= Prompt String (Maybe String -> k)
38-
| forall a . Print (Doc a) k
39-
| AskLine (Line -> k)
36+
= Prompt String (Maybe String -> m k)
37+
| forall a . Print (Doc a) (m k)
38+
| AskLine (Line -> m k)
4039

41-
deriving instance Functor (Readline m)
40+
deriving instance Functor m => Functor (Readline m)
4241

4342
instance HFunctor Readline where
44-
hmap _ = coerce
43+
hmap f (Prompt s k) = Prompt s (f . k)
44+
hmap f (Print d k) = Print d (f k)
45+
hmap f (AskLine k) = AskLine (f . k)
4546

46-
instance Effect Readline where
47-
handle state handler = coerce . fmap (handler . (<$ state))
4847

4948
prompt :: (IsString str, Member Readline sig, Carrier sig m) => String -> m (Maybe str)
5049
prompt p = fmap fromString <$> send (Prompt p pure)

semantic-core/src/Data/Name.hs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,14 +99,14 @@ namespace s m = send (Namespace s m pure)
9999

100100

101101
data Naming m k
102-
= Gensym Text (Gensym -> k)
103-
| forall a . Namespace Text (m a) (a -> k)
102+
= Gensym Text (Gensym -> m k)
103+
| forall a . Namespace Text (m a) (a -> m k)
104104

105-
deriving instance Functor (Naming m)
105+
deriving instance Functor m => Functor (Naming m)
106106

107107
instance HFunctor Naming where
108-
hmap _ (Gensym s k) = Gensym s k
109-
hmap f (Namespace s m k) = Namespace s (f m) k
108+
hmap f (Gensym s k) = Gensym s (f . k)
109+
hmap f (Namespace s m k) = Namespace s (f m) (f . k)
110110

111111
instance Effect Naming where
112112
handle state handler (Gensym s k) = Gensym s (handler . (<$ state) . k)

src/Control/Effect/Interpose.hs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ import Control.Effect.Sum
1515
data Interpose (eff :: (* -> *) -> * -> *) m k
1616
= forall a . Interpose (m a) (forall n x . eff n x -> m x) (a -> m k)
1717

18-
-- deriving instance Functor m => Functor (Interpose eff m)
18+
deriving instance Functor m => Functor (Interpose eff m)
1919

20-
-- instance HFunctor (Interpose eff) where
21-
-- hmap f (Interpose m h k) = Interpose (f m) (f . h) (f . k)
20+
instance HFunctor (Interpose eff) where
21+
hmap f (Interpose m h k) = Interpose (f m) (f . h) (f . k)
2222

2323
-- | Respond to requests for some specific effect with a handler.
2424
--
@@ -47,11 +47,12 @@ newtype Listener (eff :: (* -> *) -> * -> *) m = Listener (forall n x . eff n x
4747
-- runListener :: Listener eff (InterposeC eff m) -> eff (InterposeC eff m) (InterposeC eff m a) -> InterposeC eff m a
4848
-- runListener (Listener listen) = listen
4949

50-
-- instance (Carrier sig m, Member eff sig) => Carrier (Interpose eff :+: sig) (InterposeC eff m) where
51-
-- eff (L (Interpose m h k)) =
52-
-- InterposeC (local (const (Just (Listener h))) (runInterposeC m)) >>= _ k
53-
-- eff (R other) = do
54-
-- listener <- InterposeC ask
55-
-- case (listener, prj other) of
56-
-- (Just listener, Just eff) -> runListener listener eff
57-
-- _ -> InterposeC (eff (R (handleCoercible other)))
50+
instance (Carrier sig m, Member eff sig) => Carrier (Interpose eff :+: sig) (InterposeC eff m) where
51+
eff = undefined
52+
-- eff (L (Interpose m h k)) =
53+
-- InterposeC (local (const (Just (Listener h))) (runInterposeC m)) >>= _ k
54+
-- eff (R other) = do
55+
-- listener <- InterposeC ask
56+
-- case (listener, prj other) of
57+
-- (Just listener, Just eff) -> runListener listener eff
58+
-- _ -> InterposeC (eff (R (handleCoercible other)))

src/Semantic/REPL.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ repl proxy parser paths =
6161
runM
6262
. withDistribute
6363
. withCatch
64-
. withResource
64+
. runResource
6565
. withTimeout
6666
. runError @SomeException
6767
. runTelemetryIgnoringStat (logOptionsFromConfig config)

0 commit comments

Comments
 (0)