2010-07-29 48 views

回答

2

%?具有太高的優先級和是左結合的,所以v %? \z -> z * 2 %? \z -> z + 3相同v %? \z -> z * (2 %? \z -> z + 3)

如果你想%?表現得像$使用infixr 0 %?,所以它具有相同的優先級和結合作爲$

+0

這是非常快,謝謝! – user406288 2010-07-29 23:33:00

2

那麼,這將有助於知道你是什麼期待它做的。但也許這將有助於把一些明確的括號中p

q :: Int -> Int 
q v = v %? (\z -> z * (2 %? (\z -> z + 3))) 

或許你是你期待更多的東西是這樣的:

p2 :: Int -> Int 
p2 v = v %? (\z -> (z * 2) %? (\z -> z + 3)) 

這可能是一個好主意,添加infix聲明任何運營商你聲明,以避免這種混淆。算術運算符具有中高優先級,但是給定了函數的功能,您可能需要非常低的優先級。

作爲旁白 - 拉姆達達一直延伸到正確的位置,但我猜測這並不是什麼讓你失望。

+0

偉大的工作,謝謝! – user406288 2010-07-29 23:33:23

相關問題