77 | | * If all type constructors `S` mentioned in `T`'s definiton have `tyConCC S == ~~AsIsCC`, we do not convert `T` and set its `tyConCC` field to `AsIsCC` as well~~. (NB: This implies that `T` does not mention any function arrows.) |

78 | | * Otherwise, ~~generate a converted type declaration `T_CC` together two conversion functions `fr_T` and `to_~~T`, and set |

79 | | `tyConCC` to `ConvCC (T_CC, ~~fr_T, to_~~T)`. |

80 | | Note that basic types, such as `Int` and friends, should have `tyConCC` set to `~~AsIsCC`~~. |

| 77 | * If all type constructors `S` mentioned in `T`'s definiton have `tyConCC S == ConvCC S`, we do not convert `T` and set its `tyConCC` field to `ConvCC (T, isoT)` generating a suitable conversion constructor `isoT`. (NB: This implies that `T` does not mention any function arrows.) |

| 78 | * Otherwise, we generate a converted type declaration `T_CC` together a conversion constructor `isoT`, and set |

| 79 | `tyConCC` to `ConvCC (T_CC, isoT)`. |

| 80 | Note that basic types, such as `Int` and friends, should have `tyConCC` set to `ConvCC (Int, isoInt)` with identity conversions `isoInt = id :<->: id. |