我尝试构建一个函数,当函数高于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:我需要用户let
并列出comprehesion
答案 0 :(得分:3)
我假设您想要在3元组列表中获取所有3元组,其中组件的总和大于100,并且您希望以某种方式在listcomprehension中使用let。
首先:表达式的类型不正确,应该是:
resultSum :: [(Integer,Integer,Integer)] -> [Integer]
尝试以下解决方案:
resultsum xs3 = [x+y+z | (x,y,z) <- xs3, let sumT=x+y+z in sumT>100]
BTW:let in
的{{1}}权限位于|
右侧的本地,您无法在|
左侧使用它。但是,您可以在|
(谢谢)的右侧使用let
作为独立条款,然后您可以在|
的左侧使用它,如
|