From context it's only used as a more concrete example of a product type to show how cardinality analysis works. I would infer that the idea is that this type would use mixedBit for the whole number and there would be a constraint that numerator < denominator. Fraction 5 1 2 would be the canonical way to represent 5 1/2 in that scheme. Practically speaking there's no reason to have the mixedBit field because a pair is enough to represent any fraction, but if it was simplified this way then the example would be redundant since there's already an example of a pair type on the same page.


On Tue, Sep 14, 2021 at 8:51 PM Galaxy Being <borgauf@gmail.com> wrote:
I'm looking at Sandy Maguire's _Thinking With Types_ and he's talking about the cardinality of types. He introduces the product type

data MixedFraction a = Fraction
{ mixedBit :: Word8
, numerator :: a
, denominator :: a
}

How is this a type for holding mixed fractions such as 5-1/2?


Lawrence Bottorff
Grand Marais, MN, USA
_______________________________________________
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.