In the Gaster and Jones paper, rows are encoded using type application of a few type constants, most notably row extension. Your implementation needs to have the following constructors in Typeconstant:
data Typeconstant = Arrow | EmptyRow | Rec | Var | RowExtension Label
Absence of labels is handled using predicates in qualified types:
data QualifiedType =...