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

Commit 604f1d9

Browse files
committed
Generalize the generators to arbitrary carriers for Core.
1 parent 4fdef93 commit 604f1d9

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

semantic-core/test/Generators.hs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{-# LANGUAGE ScopedTypeVariables, TypeOperators #-}
1+
{-# LANGUAGE FlexibleContexts, ScopedTypeVariables #-}
22

33
module Generators
44
( literal
@@ -18,7 +18,7 @@ import Hedgehog hiding (Var)
1818
import qualified Hedgehog.Gen as Gen
1919
import qualified Hedgehog.Range as Range
2020

21-
import Control.Effect.Sum ((:+:))
21+
import Control.Effect.Carrier
2222
import qualified Data.Core as Core
2323
import Data.Name
2424
import Data.Term
@@ -30,16 +30,16 @@ name :: MonadGen m => m (Named User)
3030
name = Gen.prune (named' <$> names) where
3131
names = Gen.text (Range.linear 1 10) Gen.lower
3232

33-
boolean :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User)
33+
boolean :: (Carrier sig t, Member Core.Core sig, MonadGen m) => m (t User)
3434
boolean = Core.bool <$> Gen.bool
3535

36-
variable :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User)
36+
variable :: (Carrier sig t, Member Core.Core sig, MonadGen m) => m (t User)
3737
variable = pure . namedValue <$> name
3838

39-
ifthenelse :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User) -> m (Term (Core.Ann :+: Core.Core) User)
39+
ifthenelse :: (Carrier sig t, Member Core.Core sig, MonadGen m) => m (t User) -> m (t User)
4040
ifthenelse bod = Gen.subterm3 boolean bod bod Core.if'
4141

42-
apply :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User) -> m (Term (Core.Ann :+: Core.Core) User)
42+
apply :: (Carrier sig t, Member Core.Core sig, MonadGen m) => m (t User) -> m (t User)
4343
apply gen = go where
4444
go = Gen.recursive
4545
Gen.choice
@@ -48,21 +48,21 @@ apply gen = go where
4848
, Gen.subtermM go (\x -> Core.lam <$> name <*> pure x)
4949
]
5050

51-
lambda :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User) -> m (Term (Core.Ann :+: Core.Core) User)
51+
lambda :: (Carrier sig t, Member Core.Core sig, MonadGen m) => m (t User) -> m (t User)
5252
lambda bod = do
5353
arg <- name
5454
Gen.subterm bod (Core.lam arg)
5555

56-
record :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User) -> m (Term (Core.Ann :+: Core.Core) User)
56+
record :: (Carrier sig t, Member Core.Core sig, MonadGen m) => m (t User) -> m (t User)
5757
record bod = Core.record <$> Gen.list (Range.linear 0 5) ((,) . namedValue <$> name <*> bod)
5858

59-
atoms :: MonadGen m => [m (Term (Core.Ann :+: Core.Core) User)]
59+
atoms :: (Carrier sig t, Member Core.Core sig, MonadGen m) => [m (t User)]
6060
atoms = [variable, pure Core.unit, boolean, Core.string <$> Gen.text (Range.linear 1 10) Gen.lower]
6161

62-
literal :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User)
62+
literal :: (Carrier sig t, Member Core.Core sig, MonadGen m) => m (t User)
6363
literal = Gen.recursive Gen.choice atoms [lambda literal, record literal]
6464

65-
expr :: MonadGen m => m (Term (Core.Ann :+: Core.Core) User)
65+
expr :: (Carrier sig t, Member Core.Core sig, MonadGen m) => m (t User)
6666
expr = Gen.recursive Gen.choice atoms
6767
[ Gen.subtermM expr (\x -> flip Core.rec x <$> name)
6868
, Gen.subterm2 expr expr (Core.>>>)

0 commit comments

Comments
 (0)