[英]Haskell make a list of the variables of a list
假设我有数据
data Expense = MkExpense Double String deriving (Eq,Ord)
和一个功能
balanced :: [Expense] -> Double -> Bool
balanced expenses epsilon =
let amounts = ...
in maximum amounts - minimum amounts < epsilon;
计算支出清单是否为余额(即每个人都支付相同的费用,由于浮点误差导致的epsilon的最大差额),epsilon的值为0.01。
alogrithm是正确的,但是三个点在哪里,我想提取一个双打列表。 即我参数中所有费用的两倍。 如何在不更改数据类型的情况下做到这一点?
您可以按以下步骤进行:
balanced :: [Expense] -> Double -> Bool
balanced expenses epsilon =
let amounts = map extractExpense expenses
in maximum amounts - minimum amounts < epsilon
而extractExpense
将成为数据的Double
值的展开器:
extractExpense :: Expense -> Double
extractExpense (MkExpense expense _) = expense
或更简洁:
balanced :: [Expense] -> Double -> Bool
balanced expenses epsilon =
let amounts = map extractExpense expenses
in maximum amounts - minimum amounts < epsilon
where extractExpense (MkExpense e _) = e
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.