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