--Exercise 6.47
makeBill :: TillType -> BillType
makeBill [t] = [(myLookup t)]
makeBill (t:ts) = (myLookup t):(makeBill ts)
--Exercise 6.46
mydatabase:: Database
mydatabase = [(123,"egg",23)]
myLookup :: BarCode -> (Name,Price)
myLookup bcode = look mydatabase bcode
--Exercise 6.45
look :: Database -> BarCode -> (Name,Price)
look [] _ = ("Unknown Item",0)
look ((b,name,price):xs) bcode
| b == bcode = (name,price)
| otherwise = look xs bcode
--Exercise 6.44
formatBill :: BillType ->String
formatBill bill = (formatLines bill) ++ (formatTotal $ makeTotal bill)
--Exercise 6.43
formatTotal :: Int -> String
formatTotal p = "\nTotal......." ++ (show p)
--Exercise 6.42
type TillType =[BarCode]
type BillType = [(Name,Price)]
makeTotal::BillType -> Price
makeTotal [] = 0
makeTotal ((_,p):xs) = p + (makeTotal xs)
--Exercise 6.41
formatLines :: [(Name,Price)] -> String
formatLines [] = ""
formatLines (x:xs) = (formatLine x) ++ (formatLines xs)
--Exercise 6.40
formatLine ::(Name,Price) -> String
formatLine (name,p) = name ++".........."++ (formatPence p)++ "\n"
type Name = String
type Price = Int
type BarCode = Int
type Database = [(BarCode,Name,Price)]
--Exercise 6.39
formatPence :: Price -> String
formatPence p = (show (p `div` 100)) ++ "." ++ (show ( mod p 100))
--Exercise 6.38
--Exercise 6.37
--Exercise 6.36
--Exercise 6.35
Haskell函数式编程基础习题(5)
最新推荐文章于 2020-05-20 23:04:57 发布