79814817

Date: 2025-11-09 13:59:30
Score: 1
Natty:
Report link

Although not an answer to the question (still hope there is some clever way (as always in haskell...)). For reusing determining lower and upper bounds I came with something like this:

data ValueRange = MkValueRange { minValue :: Double, maxValue :: Double }

instance Show ValueRange where
    show (MkValueRange minV maxV) = "ValueRange(" ++ show minV ++ ", " ++ show maxV ++ ")"


fmap2 :: (Double -> Double -> Double) -> ValueRange -> ValueRange -> ValueRange
fmap2 f (MkValueRange minA maxA) (MkValueRange minB maxB) =
    MkValueRange (minimum results) (maximum results)
  where
    results = [ f x y | x <- [minA, maxA], y <- [minB, maxB] ]


(<+>) :: ValueRange -> ValueRange -> ValueRange
(<+>) = fmap2 (+)

(<->) :: ValueRange -> ValueRange -> ValueRange
(<->) = fmap2 (-)

(<*>) :: ValueRange -> ValueRange -> ValueRange
(<*>) = fmap2 (*)

(</>) :: ValueRange -> ValueRange -> ValueRange
(</>) = fmap2 (/)

example1 :: ValueRange
example1 = MkValueRange 10 20 <+> MkValueRange 5 15
Reasons:
  • Blacklisted phrase (1): not an answer
  • Long answer (-0.5):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (0.5):
Posted by: Dominik G