Tengo curiosidad acerca de la expresión flip id
(No es tarea: lo encontré en la documentación getOpt
).¿Por qué Haskell tiene el "tirón de identificación" tiene este tipo?
Me pregunto por qué tiene este tipo:
Prelude> :t (flip id)
(flip id) :: b -> (b -> c) -> c
Por ejemplo, (flip id) 5 (+6)
da 11
.
Sé por qué id (+6) 5
da 11, pero no "entiendo" lo de flip id
.
Traté de resolver esto usando lápiz y papel pero no pude. ¿Alguien podría explicarme esto? Quiero decir, ¿cómo el flip id
viene a tener el tipo b -> (b -> c) -> c
?
Oye, ertes, pareces tener [otra cuenta] (http://stackoverflow.com/users/1488832/ertes), las cuales no están registradas. Si registra su cuenta, puede [combinarlos] (http://meta.stackexchange.com/questions/18232/how-can-one-link-merge-combine-associate-two-accounts-users-anonymous-unregist) y luego tener una sola cuenta para todas sus respuestas (¡que son realmente buenas, por cierto!). – huon
Gracias, gran respuesta. Su mención de '$' hace que sea más intuitivo de entender y me alegra que no lo haya dejado. Le tomará a mi cerebro unos días más entender completamente tu respuesta. –
Buena respuesta. Pensar en 'flip id' como' flip ($) 'ayuda mucho. – Garrett