<div dir="ltr"><div>I don't think there is a point in looking for GHC.Generics-based solution, as Data.Data is the exact match for this kind of problem.</div><div><br></div><div>-- <br></div><div>Best, Artem<br></div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, 29 Oct 2018 at 16:35 Li-yao Xia <<a href="mailto:lysxia@gmail.com">lysxia@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This maps every field to 1, and folds them together using (+):<br>
<br>
     Data.Data.gmapQl (+) 0 (const 1) :: T -> Int<br>
<br>
(There has to be a similarly easy solution using GHC.Generics instead <br>
but I can't think of one...)<br>
<br>
Li-yao<br>
<br>
On 10/29/18 2:56 PM, Markus Läll wrote:<br>
> Dear list,<br>
> <br>
> Is it possible te get the number of fields for data constructors for a <br>
> plain ADT, i.e something with no record fields? E.g for<br>
> <br>
> data T = A Int Double | B String (Maybe String)<br>
> <br>
> it would give 2 for both `A` and `B`.<br>
> <br>
> For a record it's possible using the `constrFields` function from Data.Data.<br>
> <br>
> I was trying to follow this tutorial by Christopher Done <br>
> <a href="https://chrisdone.com/posts/data-typeable" rel="noreferrer" target="_blank">https://chrisdone.com/posts/data-typeable</a>, and I feel that it must be <br>
> possible somehow to get these numbers with the gmap*/gfold* functions, <br>
> but the use of them is over my head at the moment.<br>
> <br>
> <br>
> Best,<br>
> <br>
> <br>
> <br>
> -- <br>
> Markus Läll<br>
> <br>
> _______________________________________________<br>
> Haskell-Cafe mailing list<br>
> To (un)subscribe, modify options or view archives go to:<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>
> Only members subscribed via the mailman list are allowed to post.<br>
> <br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<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>
Only members subscribed via the mailman list are allowed to post.</blockquote></div>