
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.
--
Best, Artem
On Mon, 29 Oct 2018 at 16:35 Li-yao Xia
This maps every field to 1, and folds them together using (+):
Data.Data.gmapQl (+) 0 (const 1) :: T -> Int
(There has to be a similarly easy solution using GHC.Generics instead but I can't think of one...)
Li-yao
On 10/29/18 2:56 PM, Markus Läll wrote:
Dear list,
Is it possible te get the number of fields for data constructors for a plain ADT, i.e something with no record fields? E.g for
data T = A Int Double | B String (Maybe String)
it would give 2 for both `A` and `B`.
For a record it's possible using the `constrFields` function from Data.Data.
I was trying to follow this tutorial by Christopher Done https://chrisdone.com/posts/data-typeable, and I feel that it must be possible somehow to get these numbers with the gmap*/gfold* functions, but the use of them is over my head at the moment.
Best,
-- Markus Läll
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.