我刚开始学习 Haskell,在阅读“Learn You a Haskell”一书时,我遇到了一个问题。这两种做本质上相同的事情的方式有什么区别:
qtz 1 = [1]
qtz x
| even x = x : qtz (x `div` 2)
| odd x = x : qtz (x * 3 + 1)
-- this
length (filter (>15) (map length (map qtz [1..100])))
-- and this
length (filter (\ xs -> length xs > 15) (map qtz [1..100]))
Run Code Online (Sandbox Code Playgroud) haskell ×1