Es trivial para redefinir la función¿Cómo se define (?) Internamente?
(,) :: a -> b -> (a,b)
(,) a b = (a,b)
El (para mí) Lo extraño es que esta función se define para tuplas de longitud arbitraria. Entonces, por ejemplo, en realidad hay una función:
(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> ... -> (a,b,c,...)
¿Cómo se hace esto? ¿Por qué no se hace para todas las funciones estándar en tuplas, como zip?
Hoogle me da no results, y no veo cómo la plantilla Haskell podría hacer esto, así que supongo que debe ser algún tipo de magia dentro del compilador. Pero eso me parece muy poco Haskelly.
Debería tener su pregunta ahora. –
Muy no Haskelly, pero cierto. – augustss