Principalmente he estado escribiendo código orientado a objetos en mi trabajo diario y tengo poca experiencia con la programación funcional.
En código JavaScript/mecanografiado, definitivamente podemos pasar objetos como parámetros a funciones. Mi pregunta es si pasar objetos a funciones viola el paradigma de programación funcional ya que estoy mezclando código orientado a objetos con programación de estilo funcional. (Aunque el objeto pasado a la función no se muta).
Por ejemplo, si tengo una función f(x,y) => z donde x es un objeto que define alguna interfaz. El objeto x realiza una llamada de red para acceder a algún recurso que se utiliza para calcular z . ¿Podemos decir que tal función todavía se adhiere al concepto de programación funcional de que no tiene efectos secundarios y es pura a pesar de que hay una mezcla de código OO en el parámetro de la función?
Espero que mi pregunta haya sido clara.
si tengo una función
f(x,y) => zdondexes un objeto que define alguna interfaz. El objetoxrealiza una llamada de red para acceder a algún recurso que se utiliza para calcularz.
Si x hace una llamada de red y usa el resultado para calcular z , entonces (según la mayoría de las definiciones) no es determinista (ya que realiza E/S) y, por lo tanto, no es una función pura . Esto significa además que f también es impura. No considero eso FP . Más bien, es un intento de inyección de dependencia .
Sin embargo, esto no significa que no pueda pasar 'estructuras de datos' como parámetros; solo tienen que ser inmutables u otras funciones puras.
Si, en cambio, el objeto x implementó una interfaz que define una función pura (por ejemplo, un algoritmo), puede pasarla como un parámetro, usar la función pura y la función que usa el 'objeto' podría seguir siendo pura.