Estoy observando functors, functors aplicativos ... No estoy seguro de cómo llegar a donde quiero, pero tengo la sensación de que seguir los tipos debería acercarme más.¿Puedo mapear el primer elemento de un par sin flechas?
¿Hay una manera simple de hacer un map
-al igual que solo se aplica al primer elemento de una 2-tupla? Tomando first
de Control.Arrow
y el uso de Arrow (->)
, esto hace el truco muy bien:
map . first :: (b -> c) -> [(b, d)] -> [(c, d)]
Mi única preocupación es que todavía tengo que ganar una intuición real para flechas, y así probablemente voy a encontrar en aguas profundas tarde o más tarde si sigo así. Además, este parece ser un caso bastante conveniente que no se puede generalizar.
¿Puedo obtener la misma funcionalidad utilizando algo de funtores, mónadas o lo que sea, mientras voy al corazón de lo que quiero? Estaba jugando con
\f -> map (f `on` fst)
-me gustaron las ideas, pero no pude conseguirlo.
Si se utiliza una abstracción que no entiende te hace sentir incómodo, no hay * absolutamente nada * incorrecto al usar el mapa 'de la versión menos abstracta (\ (a, b) -> (fa, b))'. –
¡Gracias por todas las sugerencias!Esto ha sido realmente esclarecedor. Has aceptado la respuesta más votado por ti. – Ashe
Comprueba http://stackoverflow.com/questions/413930 si te sientes incómodo con 'map. primero'. – sdcvvc