37
我很好奇flip id
(这不是作业:我在getOpt
文档中找到它)。为什么Haskell的“flip id”有这种类型?
我不知道为什么它有这个类型:
Prelude> :t (flip id)
(flip id) :: b -> (b -> c) -> c
例如,(flip id) 5 (+6)
给11
。
我知道为什么id (+6) 5
给出11,但我没有“得到”flip id
的东西。
我试图用笔和纸自己弄清楚,但不能。有谁可以向我解释这个吗?我的意思是,flip id
怎么会有b -> (b -> c) -> c
?
嘿,ertes,你似乎有[另一个帐户](http://stackoverflow.com/users/1488832/ertes),两者都未注册。如果你注册你的帐户,你可以[合并它们](http://meta.stackexchange.com/questions/18232/how-can-one-link-merge-combine-associate-two-accounts-users-anonymous-unregist ),然后有一个单一的帐户所有的答案(顺便说一句,这真的很好!)。 – huon
谢谢,很好的答案。你提到'$'使得它更直观易懂,我很高兴你没有离开它。这将使我的大脑再过几天才能完全理解你的答案。 –
很好的答案。将“flip id”想成“flip($)”有很多帮助。 – Garrett