繁体   English   中英

Haskell列出列表中的变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM