12345678910111213141516171819202122232425262728293031moduletypeMonad=sigtype'atvalreturn:'a->'atmoduleO:sigval(>>|):'at->('a->'b)->'btval(>>=):'at->('a->'bt)->'btendendmoduletypeKeys=sigtypettypeeltvalempty:tvaladd:t->elt->tvalmem:t->elt->boolendmoduletypeTop_closure=sigtypekeytype'amonad(** Returns [Error cycle] in case the graph is not a DAG *)valtop_closure:key:('a->key)->deps:('a->'alistmonad)->'alist->('alist,'alist)resultmonadend