Al leer el famoso SICP, descubrí que los autores parecen bastante reacios a presentar la declaración de asignación al Esquema en el Capítulo 3. Leí el texto y comprendo por qué se sienten así.
Como Scheme es el primer lenguaje de programación funcional del que conozco algo, me sorprende que haya algunos lenguajes de programación funcionales (no Scheme, por supuesto) que pueden funcionar sin asignaciones.
Usemos el ejemplo que ofrece el libro, el bank account
ejemplo. Si no hay una declaración de asignación, ¿cómo se puede hacer esto? ¿Cómo cambiar la balance
variable? Lo pregunto porque sé que hay algunos llamados lenguajes funcionales puros y, según la teoría completa de Turing, esto también se puede hacer.
Aprendí C, Java, Python y uso muchas tareas en cada programa que escribí. Entonces es realmente una experiencia reveladora. Realmente espero que alguien pueda explicar brevemente cómo se evitan las asignaciones en esos lenguajes de programación funcionales y qué profundo impacto (si lo hay) tiene en estos lenguajes.
El ejemplo mencionado anteriormente está aquí:
(define (make-withdraw balance)
(lambda (amount)
(if (>= balance amount)
(begin (set! balance (- balance amount))
balance)
"Insufficient funds")))
Esto cambió el balance
por set!
. Para mí, se parece mucho a un método de clase para cambiar el miembro de la clase balance
.
Como dije, no estoy familiarizado con los lenguajes de programación funcionales, por lo que si digo algo malo sobre ellos, no dudes en señalarlo.
set!
u otras funciones que terminen con a!
. Una vez que te sientas cómodo con eso, la transición a FP pura debería ser más fácil.