Implement a safety-check to guarantee that recursive parametric types
remain regular. Within their recursive definitions, parametric types must always be instantiated with their original parameters and all types of mutually recursive definitions must have the same parameters. We use Tarjan's strongly connected components algorithm to group type definitions accordingly.
Showing with 184 additions and 18 deletions