1
我通過第一個Haskell書工作我的方式,並與運營商$
奮鬥:
下面這行工作:
map (>= 16) . take 5 $ iterate (\x -> x^2) 2
但是,下面沒有按」 T:
map (>= 16) . take 5 (iterate (\x -> x^2) 2)
可能的原因:'拿」被應用到的參數太多
我在這裏沒有看到問題。 take
接受一個int和一個列表。就我的理解,我提供了兩個論點。
如果我想避開$
運算符,我該怎麼辦?
原始相當於'(map(> = 16)。take 5)(iterate(\ x - > x^2)2)'。 '''期望它的操作數是函數。你也可以寫'map(> = 16)$ take 5(iterate(\ x - > x^2)2)'。 – Ryan
'地圖(> = 16)。取5(iterate(\ x - > x^2)2)'實際上是指'(map(> = 16))。 (取5(iterate(\ x - > x^2)2))''so'(。)'傳遞函數和列表而不是兩個函數。請記住,應用程序'f x y z'比'+'或'''具有更高的優先級。 – chi
我經常遵循這個規則:'''單獨的函數和$''的參數這將給出'map(> = 16)。拿5。迭代(^ 2)$ 2' – Ingo