假设我有两种数据类型:
data DataType1 = DataType1 { id :: Int, values :: [Int]} deriving (Show)
data DataType2 = DataType2 { dataType1Id :: Int, values2 :: [Int]} deriving (Show)
现在我想比较值的平均值和相关的值2(所以DataType1Id = id)。 我在Haskell中很新,所以我不知道这是否可行。
这是我比较平均值的函数:
isGreaterAvgThen :: DataType2 -> Bool
isGreaterAvgThen x
| average (values2 x) > average (values y) = True
| otherwise = False
where y = ...
average是一个计算Ints列表平均值的函数(average :: [Int] - > Double)
答案 0 :(得分:2)
这对你有用吗?
where y = fromMaybe (error "missing value") $
find ((== id x) . dataType1Id) listOfDataType2
由于列表可能缺少所需的值,find
的类型包含在Maybe ....如果您确定它在那里,您可以像我一样用fromMaybe
打开它是的,但是要注意,error
只是另一种说法"崩溃" ....