binds :: forall m a b c . MonadSubst a b m
      => AST a
      -> AST b
      -> [a]
      -> ([a] -> m c)
      -> m c
binds _ _ [] kont = kont []
binds :: forall m a b c . MonadSubst a b m
      => AST a
      -> AST b
      -> [a]
      -> ([a] -> m c)
      -> m c
binds _ _ [] kont = kont []
binds _ _ [] kont = kont []