Estoy implementando un algoritmo punto-en-polígono de fundición de rayos javascript de una manera puramente funcional (sin ninguna razón particular detrás de esto).¿Es posible implementar una versión js del descomprimido de Haskell de una manera puramente funcional?
Me quedé atrapado ya que necesitaba obtener dos matrices de una matriz bidimensional (que reproduce una lista de tuplas); algo parecido a Haskell's unzip
.
¿Es posible, comenzando desde algo como [[a,b],[c,d],[e,f]]
obtener [[a,c,e],[b,d,f]]
sin usar iteradores de estilo de procedimiento?
(Sé que es una pregunta trivial, y tan sólo pudiera implementar la función de procedimiento y luego olvidarse de él, pero tenía curiosidad por saber si había una solución)
EDIT: Para aclarar, Sé cómo implementar zip
y unzip
: me preguntaba si sería posible implementarlos sin for
loops y reasignaciones variables.
Dada la diferencia entre JavaScript y la representación de Haskell de una lista, no se pueden implementar de la misma manera. Haskell implementa listas como una estructura inmutable unida individualmente. Java implementa listas como una matriz mutable. Para el primero, usa recursividad y coincidencia de patrones. Para este último, usa bucles e índices. –
Hm, sé que Js no tiene listas. Me refería a una función en particular, en un dominio restringido: no lo necesitaba para trabajar en "arreglos infinitos" (lulz) o tal. – cbrandolino