In your new type, you have COMPS < #comps1, #comps2 > – these are elements of the list.

Note also that the original type has, for HEAD-DTR...COMPS, something of the form < x . y > – the . is a special syntax, so that x is the first element on the list and y is the rest of the list, i.e. it’s shorthand for cons & [ FIRST x, REST y]. (I think this syntax comes from Lisp, but you’d have to check with a Lisp programmer.)

So by writing COMPS < #comps1, #comps2 >, you are putting the rest of the list (#comps2) as the second element of the new list (i.e. REST.FIRST). You need to change it to: COMPS < #comps1 . #comps2 >, so that rest of the old list (after the second element) is the rest of the new list (after the first element).