A graph of devices, annotated with their arguments, dependencies, and a unique identifier.
Warning: this is truly a DAG: sharing must be preserved. Manual walks are discouraged, please use
fold f g z applies
f on each device in topological order.
val var_name : t -> string
var_name t returns the name identifying
t which is a valid OCaml variable identifier.
val impl_name : t -> string
impl_name t returns the name identifying
t's module implementation.