阅读“用Haskell功能思考”我遇到了一个程序计算的一部分,要求重写map sum (map (x:) xss)
作为map (x+) (map sum xss)
Haskell - 如何转换地图总和(地图(x :) xss)到地图(x +)(地图总和xss)
凭直觉我知道,这是有道理的......
如果你有一些名单,你会总结,但总结之前,那些相同的列表中,您也将添加一个元素的“x ',那么就像获得一个列表的和列表的数量并将x的值添加到它们中的每一个一样。
但我想知道如何使用等式推理将其转换为另一个。我觉得我错过了能帮助我理解的法律或规则。
我不同意列表的理解,但它肯定是一个品味的问题。为什么不使用'(。)'的定义并说'map(sum。(x :))xss = map(\ xs - > sum(x:xs))xss = map(\ xs - > x + sum xs)= ...'? – kosmikus 2014-11-20 20:07:03
@kosmikus呃,个人品味。在这种情况下,它是非常不重要的,但我可以看到在整个时间内保持“地图”的论点。 – bheklilr 2014-11-20 20:08:00
@kosmikus好看吗? – bheklilr 2014-11-20 20:10:18