@@ -18,39 +18,40 @@ import qualified Hedgehog.Range as Range
1818
1919import Data.Core
2020import Data.Name
21+ import Data.Term
2122
2223-- The 'prune' call here ensures that we don't spend all our time just generating
2324-- fresh names for variables, since the length of variable names is not an
2425-- interesting property as they parse regardless.
25- name :: MonadGen m => m Name
26- name = Gen. prune (User <$> names) where
26+ name :: MonadGen m => m ( Named Name )
27+ name = Gen. prune (( Named . Ignored <*> User ) <$> names) where
2728 names = Gen. text (Range. linear 1 10 ) Gen. lower
2829
29- boolean :: MonadGen m => m Core
30- boolean = Bool <$> Gen. bool
30+ boolean :: MonadGen m => m ( Term Core Name )
31+ boolean = bool <$> Gen. bool
3132
32- variable :: MonadGen m => m Core
33- variable = Var <$> name
33+ variable :: MonadGen m => m ( Term Core Name )
34+ variable = pure . namedValue <$> name
3435
35- ifthenelse :: MonadGen m => m Core -> m Core
36- ifthenelse bod = Gen. subterm3 boolean bod bod If
36+ ifthenelse :: MonadGen m => m ( Term Core Name ) -> m ( Term Core Name )
37+ ifthenelse bod = Gen. subterm3 boolean bod bod if'
3738
38- apply :: MonadGen m => m Core -> m Core
39+ apply :: MonadGen m => m ( Term Core Name ) -> m ( Term Core Name )
3940apply gen = go where
4041 go = Gen. recursive
4142 Gen. choice
42- [ Gen. subterm2 gen gen (: $) ]
43- [ Gen. subterm2 go go (: $) -- balanced
44- , Gen. subtermM go (\ x -> Lam <$> name <*> pure x)
43+ [ Gen. subterm2 gen gen ($ $) ]
44+ [ Gen. subterm2 go go ($ $) -- balanced
45+ , Gen. subtermM go (\ x -> lam <$> name <*> pure x)
4546 ]
4647
47- lambda :: MonadGen m => m Core -> m Core
48+ lambda :: MonadGen m => m ( Term Core Name ) -> m ( Term Core Name )
4849lambda bod = do
4950 arg <- name
50- Gen. subterm bod (Lam arg)
51+ Gen. subterm bod (lam arg)
5152
52- atoms :: MonadGen m => [m Core ]
53- atoms = [boolean, variable, pure Unit , pure Frame ]
53+ atoms :: MonadGen m => [m ( Term Core Name ) ]
54+ atoms = [boolean, variable, pure unit , pure frame ]
5455
55- literal :: MonadGen m => m Core
56+ literal :: MonadGen m => m ( Term Core Name )
5657literal = Gen. recursive Gen. choice atoms [lambda literal]
0 commit comments