diff options
| author | Josh Rahm <joshuarahm@gmail.com> | 2024-10-05 17:13:26 -0600 |
|---|---|---|
| committer | Josh Rahm <joshuarahm@gmail.com> | 2024-10-05 17:13:26 -0600 |
| commit | 3ceedaf5f5193fadadcb011c40df1688cfed279d (patch) | |
| tree | 772c8a0c607d68e287addc59bdde71172edd10b1 /src/Language/Fiddle/Ast/Internal/Instances | |
| parent | 407e41489cc22fbf0518fd370530f8857b8c3ed0 (diff) | |
| download | fiddle-3ceedaf5f5193fadadcb011c40df1688cfed279d.tar.gz fiddle-3ceedaf5f5193fadadcb011c40df1688cfed279d.tar.bz2 fiddle-3ceedaf5f5193fadadcb011c40df1688cfed279d.zip | |
Implement qualification.
Big change. Implements qualification, which separates the qualification
concerns from the ConsistencyCheck phase.
I'm getting close to implementing a backend.
Diffstat (limited to 'src/Language/Fiddle/Ast/Internal/Instances')
| -rw-r--r-- | src/Language/Fiddle/Ast/Internal/Instances/Walk.hs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/Language/Fiddle/Ast/Internal/Instances/Walk.hs b/src/Language/Fiddle/Ast/Internal/Instances/Walk.hs index d80963d..221dd5b 100644 --- a/src/Language/Fiddle/Ast/Internal/Instances/Walk.hs +++ b/src/Language/Fiddle/Ast/Internal/Instances/Walk.hs @@ -1,8 +1,16 @@ -module Language.Fiddle.Ast.Internal.Instances.Walk (Walk (..), GWalk (..)) where +module Language.Fiddle.Ast.Internal.Instances.Walk (Walk (..), GWalk (..), walk_) where import Data.Typeable import GHC.Generics +-- | Like walk, but assumes no local state. +walk_ :: + (Monad m, Traversable f, Typeable f, Typeable a, Walk t) => + (forall t'. (Walk t', Typeable t', Typeable f, Typeable a) => t' f a -> m ()) -> + t f a -> + m () +walk_ fn t = walk (\t _ -> fn t) t () + class (Typeable t) => Walk t where walk :: (Monad m, Traversable f, Typeable f, Typeable a) => |