RosettaCodeData/Task/First-class-functions-Use-numbers-analogously/Haskell/first-class-functions-use-numbers-analogously.hs
2023-07-01 13:44:08 -04:00

27 lines
561 B
Haskell

module Main
where
import Text.Printf
-- Pseudo code happens to be valid Haskell
x = 2.0
xi = 0.5
y = 4.0
yi = 0.25
z = x + y
zi = 1.0 / ( x + y )
-- Multiplier function
multiplier :: Double -> Double -> Double -> Double
multiplier a b = \m -> a * b * m
main :: IO ()
main = do
let
numbers = [x, y, z]
inverses = [xi, yi, zi]
pairs = zip numbers inverses
print_pair (number, inverse) =
let new_function = multiplier number inverse
in printf "%f * %f * 0.5 = %f\n" number inverse (new_function 0.5)
mapM_ print_pair pairs