閱讀「用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