¿Es cierto que Lisp no es un lenguaje de programación funcional? [cerrado]

Leí en el libro: "Mentes maestras de la programación", dice la entrevista con Guido Van Rossum:

La propiedad más fundamental que Python comparte con Lisp (¡tampoco es un lenguaje funcional!) Es que las funciones son objetos de primera clase....

Entonces, Lisp es no es un lenguaje de programación funcional?

¿Guido está equivocado? ¿Entonces que es?

preguntado el 16 de mayo de 11 a las 18:05

setq setq setq setq -

No veo cómo es esto "subjetivo", el lenguaje tampoco una programación funcional o no. -

No existe una definición formal de cuándo un lenguaje califica como un lenguaje de programación funcional, por lo que depende de su punto de vista. Generalmente, se diría que un lenguaje de programación funcional es uno que desalienta la mutación y enfatiza un estilo declarativo de programación (a menudo usando funciones de orden superior y recursividad). Según esa definición, tanto python como lisp son casi igualmente funcionales: ambos tienen funciones de orden superior y otras formas declarativas de expresar bucles, pero ambos también tienen primitivas de uso común para la mutación y no requieren optimización de recursividad de cola. -

Es interesante notar que ceceo original, mínimo no se tener setq. No es parte de lo que hace que lisp lisp, sino algo que se agrega a la mayoría de las implementaciones para que sea más fácil hacer ciertas cosas. -

Lisp no es un lenguaje de programación, sino una familia de lenguajes de programación. Clojure es un Lisp funcional. Por otro lado, Common Lisp admite características funcionales, pero el uso de técnicas imperativas es más generalizado en los programas Common Lisp. -

2 Respuestas

Casi todos los Lisp que conozco se pueden usar para programar en un estilo funcional (¡todo lo que realmente necesitas son funciones de primera clase, después de todo!)

Sin embargo, los Lisps son más como kits de herramientas en varios idiomas: puedes hacer programación funcional, programación orientada a objetos, programación lógica, definir tu propio DSL para un nuevo paradigma loco, etc.

El Lisp que probablemente esté más cerca de un estilo de programación funcional es Clojure (tiene una evaluación perezosa, desalienta la programación orientada a objetos, utiliza estructuras de datos inmutables en todo momento, restringe la mutación incontrolada (a través de STM), tiene bastantes funciones puras / de orden superior en la biblioteca central etc.)

contestado el 18 de mayo de 11 a las 21:05

Existen lenguajes que permiten y fomentan paradigmas de programación funcional. Tanto Python como Lisp se encuentran entre estos. Lisp en particular fue el primero en aplicar conceptos teóricos derivados del cálculo lambda. A fines de la década de 1950, cuando casi solo existían FORTRAN y Lisp, Lisp se destacó como el funcional, donde FORTRAN, con una gestión de memoria totalmente estática, nunca se consideraría funcional.

Sin embargo, ni Python ni Lisp hacer cumplir funcionalidad pura, permitiendo variables mutables, estados y construcciones imperativas. Una mezcla de estilos siempre puede ser útil en la práctica, por lo que probablemente no encontrará muchos ejemplos de puro conceptos en herramientas de gran éxito.

Entre los lenguajes puramente funcionales, Haskell, Clean y Miranda son ejemplos enumerados, pero no puedo decir nada sobre ellos.

contestado el 18 de mayo de 11 a las 12:05

De hecho, tanto Python como Common Lisp imponen una programación imperativa. Ambos nunca garantizarán un manejo adecuado de la recursividad de cola, por lo que tener utilizar bucles imperativos. - SK-lógica

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.