a series of unit conversion calculations.. not sure how to do in Haskell

Submitted by metaperl on Fri, 09/09/2005 - 12:56pm.

-- 2 oranges make 8 ounces of juice
ounces 8 = Oranges 2

-- a 32.oz non-organic orange juice costs 4.55 at Jamba Juice
ounces 32 = Cost 4.55

-- at retail price, I get 72 organic oranges for 10.00
-- which means 7.2 oranges for 1.00
-- which means 15 cents per orange
-- which means 30 cents for 8 ounces
-- which means 1.20 for 32 ounces
-- which means 3.35 cheaper than Jamba Juice and organic produce
-- I can get much cheaper prices on oranges if I buy in bulk

Submitted by Cale Gibbard on Mon, 09/12/2005 - 11:42am.

Here's some code :)
----
{-# OPTIONS_GHC -fglasgow-exts #-}

newtype Oranges = Oranges Double deriving (Show, Eq, Ord, Num)
newtype Juice = Juice Double deriving (Show, Eq, Ord, Num)

newtype Dollars = Dollars Double deriving (Show, Eq, Ord, Num)

squeeze :: Oranges -> Juice
squeeze (Oranges x) = Juice (8 * x/2)

buyOranges :: Dollars -> Oranges
buyOranges (Dollars x) = Oranges (72 * x/10)

buyJambaJuice :: Dollars -> Juice
buyJambaJuice (Dollars x) = Juice (32 * x/4.55)
----
In ghci:
*Main> buyJambaJuice 1
Juice 7.032967032967033
*Main> (squeeze . buyOranges) 1
Juice 28.8

So we can see that we're getting a good deal more juice for a dollar from buying and squeezing the juice ourselves. :)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.