[1 of 3] Processing p [1 of 2] Compiling H[sig] ( p/H.hsig, nothing ) [2 of 2] Compiling M ( p/M.hs, nothing ) [2 of 3] Processing q Instantiating q [1 of 1] Compiling H ( q/H.hs, bkpfail26.out/q/H.o ) [3 of 3] Processing r Instantiating r [1 of 1] Including p[H=q:H] Instantiating p[H=q:H] [1 of 2] Compiling H[sig] ( p/H.hsig, bkpfail26.out/p/p-D5Mg3foBSCrDbQDKH4WGSG/H.o ) bkpfail26.bkp:16:9: error: • Type constructor ‘T’ has conflicting definitions in the module and its hsig file Main module: type T :: * -> * type T a = [a] Hsig file: type role T nominal type T :: * -> * data T a Illegal parameterized type synonym in implementation of abstract data. (Try eta reducing your type synonym so that it is nullary.) • while checking that q:H implements signature H in p[H=q:H]