<div dir="ltr">You could constrain d in the type signature of SC.<div><p class=""><span class="">{-# LANGUAGE GADTs #-}</span><span class="">                                                                                                               </span><span class="">data</span><span class=""> </span><span class="">S</span><span class=""> e </span><span class="">where</span><span class="">                                                                                                                                    </span><span class="">SC</span><span class=""> </span><span class="">::</span><span class=""> </span><span class="">Show</span><span class=""> d </span><span class="">=></span><span class=""> d </span><span class="">-></span><span class=""> e </span><span class="">-></span><span class=""> </span><span class="">S</span><span class=""> e                                                                                                         </span></p><p class=""><span class="">instance</span><span class=""> </span><span class="">Show</span><span class=""> e </span><span class="">=></span><span class=""> </span><span class="">Show</span><span class=""> (</span><span class="">S</span><span class=""> e) </span><span class="">where</span><span class="">                                                                                                </span><span class="">show (</span><span class="">SC</span><span class=""> x y) </span><span class="">=</span><span class=""> show x </span><span class="">++</span><span class=""> show y      </span></p></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 19, 2015 at 12:16 AM, Leza Morais Lutonda <span dir="ltr"><<a href="mailto:leza.ml@fecrd.cujae.edu.cu" target="_blank">leza.ml@fecrd.cujae.edu.cu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hi All,<br>
<br>
I have the following data type:<br>
<br>
 data S e where<br>
<br>
     SC :: d -> e -> S e<br>
<br>
And I want to declare a Show instance for it in the following way:<br>
<br>
 instance Show e => Show (S e) where<br>
<br>
    show (SC x y) = show x ++ show y<br>
<br>
But, of course it don't typechecks because: could not deduce `Show d` arising from a use of `show`.<br>
Is there a way to constraint the `d` type in the `SC` constructor definition to have the same constraints of the `e` type? Something like:<br>
<br>
  SC :: SameConstraints d e => d -> e -> S e ???<br>
<br>
<br>
Thanks!<br>
<br>
<br>
-- <br>
Leza Morais Lutonda, Lemol-C<br>
<a href="http://lemol.github.io" rel="noreferrer" target="_blank">http://lemol.github.io</a><br>
<br>
<br>
<br>
50 Aniversario de la Cujae. Inaugurada por Fidel el 2 de diciembre de 1964  <a href="http://cujae.edu.cu" rel="noreferrer" target="_blank">http://cujae.edu.cu</a><br>
<br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Cell: 1.630.740.8204</div>
</div>