Se la tua domanda è "dammi alcuni esempi che mostrano come funziona FP in python", quindi:
Qual è pura programmazione funzionale (in Python)?
È un paradigma di programmazione che evita lo stato e i dati mutabili e fa affidamento sui valori di ritorno delle funzioni. Questo significa che un programma puramente funzionale scritto in python non avrà le cose come le variabili, stati ecc
Non così puro FP
È possibile combinare la FP e paradigma imperativo, e con buoni risultati (vedi here) . L'elenco collegato è un programma di quiz matematico che ho realizzato per una classe Python che ho preso alcuni mesi fa. Sentiti libero di fare quello che vuoi con il codice.
FP in Java/C#
io personalmente non hanno alcuna esperienza con C# in modo che qualcun altro avrebbe bisogno di inviare un esempio in C#, ma si può avere FP in Java, ma non pura FP.Esempio:
int fib (int x) {
if (x < 2) return x;
return fib (x-1) + fib(x-2);
}
Il metodo di cui sopra è completamente FP, ma non può essere utilizzato in un contesto puro FP utilizzando Java. Questo deve essere inserito all'interno di una classe C
in Java e può essere chiamato solo dopo il in cui è stato istanziato un oggetto di quel tipo. Quest'ultima parte squalifica la classe Java C
da FP, ma il metodo sarà ancora.
Modifica: in realtà, è possibile avere metodi statici in Java che possono essere utilizzati senza alcuna istanziazione. Pertanto, se si modifica la firma in static int fib (int x)
, il metodo e le sue chiamate di metodo potrebbero essere FP se richiamate in modalità FP.
Re: il tuo commento
ricorsione può essere FP, ma non deve essere (vedi sotto):
def f(first, rest):
print first
first = rest[0]; rest = rest[1:]
f(first, rest)
Si può anche avere FP senza ricorsione:
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 e C# non sono lingue funzionali – Denis
@Denis no, ti sbagli. molti esempi da provare per te. LINQ è basato sulla programmazione delle funzioni. E ha un libro: 'Programmazione funzionale in .NET'. In Java, non lo so. – hqt
Lol se C# è un linguaggio funzionale per il quale microsoft ha creato F #? Confondi paradigma con lo zucchero della sintassi. – Denis