Haskell 变量不在范围内-列表压缩
我正在尝试构造一个函数,该函数在大于100时返回一个元组元素和的列表Haskell 变量不在范围内-列表压缩,haskell,list-comprehension,Haskell,List Comprehension,我正在尝试构造一个函数,该函数在大于100时返回一个元组元素和的列表 resultSum :: [(Integer)] -> [Integer] resultSum (x:xs) = [ sumT | let sumT = fst x + snd x in sumT + trd x, sumT > 100 ] trd (_,_,x) = x 我收到消息: 不在范围内:`sumT' 我想,当我使用let时,我是在指定谁是我的变量 PS:我需要使用userlet和list compr
resultSum :: [(Integer)] -> [Integer]
resultSum (x:xs) = [ sumT | let sumT = fst x + snd x in sumT + trd x, sumT > 100 ]
trd (_,_,x) = x
我收到消息:
不在范围内:`sumT'
我想,当我使用let
时,我是在指定谁是我的变量
PS:我需要使用user
let
和list compression我假设您希望在一个包含3个元组的列表中获得所有3个元组,其中组件的总和大于100,并且您希望在列表中以某种方式使用let
首先:您的表达式类型不正确,可能是:
resultSum :: [(Integer,Integer,Integer)] -> [Integer]
请尝试以下解决方案:
resultsum xs3 = [x+y+z | (x,y,z) <- xs3, let sumT=x+y+z in sumT>100]
我假设你想得到一个3元组列表中的所有3元组,其中组件的总和大于100,你想在列表中使用let 首先:您的表达式类型不正确,可能是:
resultSum :: [(Integer,Integer,Integer)] -> [Integer]
请尝试以下解决方案:
resultsum xs3 = [x+y+z | (x,y,z) <- xs3, let sumT=x+y+z in sumT>100]
你想做什么?总和大于100的三元组列表中的所有三元组?您想做什么?三元组列表中的所有三元组的总和大于100?通常,在列表理解中,通常使用
let x=e,…
而不是let x=e in…
,因为前者使x
可用于理解的所有其余部分,而后者仅持续到逗号。当然,在这个特定的例子中,这并不重要,因为理解就到此为止。@chi这很重要,因为如果我们不在中使用,我们也可以在
的左侧使用sumT
。因此,你的评论就是OP问题的实际答案。一般来说,在列表理解中,通常使用let x=e,…
而不是let x=e In…
来代替。当然,在这个特定的例子中,这并不重要,因为理解就到此为止。@chi这很重要,因为如果我们不在中使用,我们也可以在
的左侧使用sumT
。所以你的评论就是OP问题的真实答案。