sig
val scrap : 'a Generic_core.Ty.T.ty -> 'a -> 'a list * ('a list -> 'a)
val children : 'a Generic_core.Ty.T.ty -> 'a -> 'a list
val replace_children : 'a Generic_core.Ty.T.ty -> 'a -> 'a list -> 'a
val map_children : 'a Generic_core.Ty.T.ty -> ('a -> 'a) -> 'a -> 'a
val family : 'a Generic_core.Ty.T.ty -> 'a -> 'a list
val post_family : 'a Generic_core.Ty.T.ty -> 'a -> 'a list
val map_family : 'a Generic_core.Ty.T.ty -> ('a -> 'a) -> 'a -> 'a
val reduce_family :
'a Generic_core.Ty.T.ty -> ('a -> 'a option) -> 'a -> 'a
val para : 'a Generic_core.Ty.T.ty -> ('a -> 'r list -> 'r) -> 'a -> 'r
val traverse_children :
'f Generic_util.Applicative.T.applicative ->
'a Generic_core.Ty.T.ty ->
('a -> ('a, 'f) Generic_util.App.T.app) ->
'a -> ('a, 'f) Generic_util.App.T.app
val traverse_family :
'f Generic_util.Monad.T.monad ->
'a Generic_core.Ty.T.ty ->
('a -> ('a, 'f) Generic_util.App.T.app) ->
'a -> ('a, 'f) Generic_util.App.T.app
val mreduce_family :
'f Generic_util.Monad.T.monad ->
'a Generic_core.Ty.T.ty ->
('a -> ('a option, 'f) Generic_util.App.T.app) ->
'a -> ('a, 'f) Generic_util.App.T.app
end