1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import Data.Ord
doClampInt :: (Int, Int) -> Int -> IO ()
doClampInt bounds a = print $ clamp bounds a
doClampFloat :: (Float, Float) -> Float -> IO ()
doClampFloat bounds a = print $ clamp bounds a
nan :: Float
nan = 0 / 0
main :: IO ()
main = do
doClampInt (0, 100) 50 -- 50
doClampInt (0, 100) 200 -- 100
doClampInt (0, 100) (-5) -- 0
doClampFloat (0, 100) 50 -- 50
doClampFloat (0, 100) 200 -- 100
doClampFloat (0, 100) (-5) -- 0
doClampFloat (0, 100) nan -- NaN
doClampFloat (nan, 100) 5 -- 5
doClampFloat (nan, 100) 105 -- 100
doClampFloat (5, nan) 105 -- 105
doClampFloat (5, nan) 3 -- 5
doClampFloat (nan, nan) 3 -- 3
|