Haskell函数式编程基础习题(5)

--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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值