我想寫這個功能,在X應用功能f
兩次現在行爲哈斯克爾
Prelude> applyTwice :: (a -> a) -> a -> a
Prelude> let applyTwice f x = f (f x)
,當我嘗試以下評價表達
Prelude> applyTwice (`subtract` 3) 10
Output: 10
Prelude> applyTwice (3 `subtract`) 10
Output: 4
根據我的理解,subtract
是一箇中綴函數,所以給定的參數應該填充空位置(左或右操作數),因此第一個表達式applyTwice (`subtract` 3) 10
應該像
10 `subtract` 3 `subtract` 3
因此,結果在這種情況下應該是4
,但輸出10
而在另一種情況下,即applyTwice (3 `subtract`) 10
,輸出爲4
,在那裏我期待它是10
我在哪裏錯了嗎?
http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:subtract – Arjan