Bounded and floating types
Conal Elliott
conal at conal.net
Tue Dec 4 15:45:43 EST 2007
Thanks. That's exactly what I've done:
-- | Wrap a type into one having new least and greatest elements,
-- preserving the existing ordering.
data AddBounds a = MinBound | NoBound a | MaxBound
deriving (Eq, Ord, Read, Show)
instance Bounded (AddBounds a) where
minBound = MinBound
maxBound = MaxBound
Looks like a generally useful tool. Is there any interest in seeing it
added to a standard lib?
- Conal
On Dec 4, 2007 4:46 AM, Henning Thielemann <lemming at henning-thielemann.de>
wrote:
>
> On Mon, 3 Dec 2007, Conal Elliott wrote:
>
> > I'm using the bounds for event occurrence times. Or, from another
> angle,
> > for times associated with when values can become known. Pure values
> have
> > time minBound, while eternally unknowable values (non-occurring events)
> have
> > time maxBound. Hm. Now that I put it that way, I realize that I don't
> want
> > to use existing minBound and maxBound if they're finite. (My event
> types
> > are temporally polymorphic.) I'm mainly interested in Float/Double
> times,
> > which have infinities in practice but apparently not guaranteed by the
> > language standard. I guess I'll either (a) bake in Double (temporally
> > monomorphic) and rely on infinities not guaranteed by the standard, or
> (b)
> > keep temporal polymorphism and add infinities to time parameter. For
> now,
> > (b).
>
> Since you cannot rely on the existence of an infinity value for a floating
> point type with a particular behaviour - you can simply define you own
> type:
>
> data InfinityClosure a = NegativeInfinity | Finite a | PositiveInfinity
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/libraries/attachments/20071204/c95d14e9/attachment.htm
More information about the Libraries
mailing list