Si su pregunta es "dame algunos ejemplos que muestran cómo funciona FP en Python", entonces:
¿Cuál es la programación funcional pura (en Python)?
Es un paradigma de programación que evita los datos de estado y mutables y en su lugar se basa en valores de retorno de función. Esto significa un programa puramente funcional escrito en Python no tendrá cosas como las variables, estados, etc.
No es tan puro FP
Puede combinar la FP y paradigma imperativo, y con buenos resultados (véase here) . La esencia vinculada es un programa de preguntas y respuestas matemáticas que realicé para una clase de Python que tomé hace algunos meses. Siéntete libre de hacer lo que quieras con el código.
FP en Java/C#
yo personalmente no tienen experiencia con C# para que otra persona tendría que poner un ejemplo de C#, pero se puede tener FP en Java, pero no pura FP.Ejemplo:
int fib (int x) {
if (x < 2) return x;
return fib (x-1) + fib(x-2);
}
El método anterior es completamente FP, pero no se puede utilizar en un contexto de FP puro cuando se utiliza Java. Esto debe colocarse dentro de una clase C
en Java, y solo puede llamarse después de ha creado una instancia de un objeto de ese tipo. Esta última parte descalifica a la clase Java C
de ser FP, pero el método seguirá siendo.
Editar: en realidad, puede tener métodos estáticos en Java que se pueden usar sin ninguna instanciación. Por lo tanto, si cambia la firma al static int fib (int x)
, entonces el método y sus llamadas al método podrían seguir siendo FP si se llama de manera FP.
Re: su comentario
recursividad puede ser FP, pero no tiene que ser (véase más adelante):
def f(first, rest):
print first
first = rest[0]; rest = rest[1:]
f(first, rest)
Usted también puede tener FP sin recursividad:
def sum (a,b):
return a+b
def square(c):
return c*c
def square_of_sum (x,y):
return square(sum(x,y))
java y C# no son idiomas funcionales – Denis
@Denis no, estás equivocado. muchos ejemplos para demostrar para usted. LINQ es la base de la programación de funciones. Y tiene un libro: 'Programación funcional en .NET'. En Java, no sé. – hqt
Lol si C# son idiomas funcionales para los cuales Microsoft hizo F #? Confundes paradigma con sintaxis azúcar. – Denis