¿Qué es el estado?

Tienes una idea errónea sobre la programación funcional. Puede cambiar el estado en él, pero lo hace llamando a una función, y las condiciones son una de las principales formas de hacerlo. En segundo lugar, puede probar la igualdad en FP.

En FP, pasar una función a una función puede representar un cambio de estado, pero depende de cuál fue la configuración previa de los parámetros de una función.

La única forma de no cambiar el estado es pasar los mismos parámetros a una función que recibió, en el mismo orden (ejemplo en código de esquema):

(define (a-function ab) (a-function ab))

Sin embargo, este caso definiría un bucle infinito.

A veces, no es conveniente cambiar algún estado en FP, pero al igual que en otra programación que ha hecho, desea que el estado cambie la mayor parte del tiempo.

La diferencia entre FP y la programación imperativa es que, en imperativo, usted cambia de estado asignando un valor a una variable, como a = 5; . En FP, si a es una variable que desea cambiar, debe ser un parámetro para una función. Esa es la única configuración que puede tener, para que cambie de estado durante el proceso.

Para responder a su pregunta principal, el estado es una función del tiempo. Representa una máquina en una determinada configuración en el tiempo t (y t puede ser un concepto abstracto no relacionado con el tiempo literal, sino solo una configuración t (1) después de una configuración t (0) , y t (2) después de t (1 ) , etc.). Como hablamos principalmente de computadoras digitales cuando hablamos de computación, la configuración de una máquina se define por su patrón de interruptores binarios en la memoria. Esto se representa de manera abstracta en nuestros lenguajes de programación.

En la mayoría de las computadoras modernas, el estado con el que trabajamos está encerrado dentro de la memoria que se dirige en relación con alguna dirección base que el sistema operativo, o en muchos casos con JavaScript, configura un navegador web para nosotros. El lenguaje mismo almacena automáticamente las transiciones de estado del programa en ciertos patrones de configuración, lo que crea efectos en la máquina que significan algo para nosotros.

Las declaraciones condicionales no cambian el estado.

Los lenguajes funcionales tienen declaraciones condicionales.

Pero sí, puede pasar funciones para ejecutar en su lugar; se llama Estilo de paso de continuación y puede ayudar a mejorar el código y evitar el estado mutable.