<div dir="ltr"><span style="font-size:12.800000190734863px">You probably want</span><div style="font-size:12.800000190734863px"><br></div><div style="font-size:12.800000190734863px">:set -XExistentialQuantification<br></div><div style="font-size:12.800000190734863px">data Test = forall a . Show a => Test String a<br></div><div style="font-size:12.800000190734863px"><br></div><div style="font-size:12.800000190734863px">Under the hood, this works by storing the vtable for the "Show" typeclass for whatever object you're putting in the Test. You could explicitly unpack this like</div><div style="font-size:12.800000190734863px"><br></div><div style="font-size:12.800000190734863px">data TestY = forall a . Test String a (a -> String)<br></div><div style="font-size:12.800000190734863px"><br></div><div style="font-size:12.800000190734863px">Cheers,</div><div style="font-size:12.800000190734863px">Will</div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Nov 5, 2016 at 2:09 PM, Gregory Guthrie <span dir="ltr"><<a href="mailto:guthrie@mum.edu" target="_blank">guthrie@mum.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="#0563C1" vlink="#954F72"><div class="m_5054097396932884793WordSection1"><p class="MsoNormal"><br></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">   data (Show a) => ATest =  Test (String, a)<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman",serif">but that also fails, although it does give the right idea; all tests have a common structure, with a second value in the Show typeclass.<u></u><u></u></span></p><p class="MsoNormal"><br></p></div></div></blockquote></div></div></div>