21 lines
499 B
Haskell
21 lines
499 B
Haskell
import Data.Fixed
|
|
import Text.Printf
|
|
|
|
type Percent = Centi
|
|
type Dollars = Centi
|
|
|
|
tax :: Percent -> Dollars -> Dollars
|
|
tax rate = MkFixed . round . (rate *)
|
|
|
|
printAmount :: String -> Dollars -> IO ()
|
|
printAmount name = printf "%-10s %20s\n" name . showFixed False
|
|
|
|
main :: IO ()
|
|
main = do
|
|
let subtotal = 4000000000000000 * 5.50 + 2 * 2.86
|
|
tx = tax 7.65 subtotal
|
|
total = subtotal + tx
|
|
printAmount "Subtotal" subtotal
|
|
printAmount "Tax" tx
|
|
printAmount "Total" total
|