Porównanie języków programowania (programowanie funkcyjne)
Ta strona zawiera tabele porównawcze funkcjonalnych instrukcji programowania między językami programowania. Porównanie podstawowych instrukcji imperatywnego paradygmatu zapewnia porównanie podstawowych instrukcji .
Operacje na liście
Aplikacje funkcyjne i listy
Dla zwięzłości słowa te będą miały określone znaczenie w poniższych tabelach (chyba że zaznaczono, że są częścią składni języka):
funcN
- Funkcja. Może być jednoargumentowy lub n-arny (lub zawsze jednoargumentowy dla języków bez funkcji n-arnych).
-
func1
,func2
, itd. - funkcje o określonej liczbie argumentów.
func
(bez numeru) to to samo cofunc1
, w wielu językach znane również jako projekcja .
-
pred
- Funkcja jednoargumentowa zwracająca wartość logiczną. ( ML :
'a -> bool
) (typ podobny do C:bool pred<T>(T t)
). lista
- Lista, na której się operuje.
args
- Lista oddzielonych przecinkami nazw jednego lub więcej argumentów, w postaci
arg1, arg2, ..., argn
. wzór
- Wzór w językach z dopasowywaniem wzorców .
val
- Dowolna odpowiednia wartość, w zależności od kontekstu.
lambda tożsamości | lambda | mapa | stosować | filtr | zginać | suma | |
---|---|---|---|---|---|---|---|
Pyton |
lambda x: x
|
argumenty lambda: wyr
|
map(funkcja, lista)
|
nfunkcja(*argumenty)
|
filtr(pred, lista)
|
functools.reduce(funkcja2, lista)
|
suma (lista)
|
Matematyka |
#&
|
(wyrażenie)& (argumenty to #1 , #2 itd.)
|
Mapa[funkcja, lista]
|
Zastosuj[nfunkcja, argumenty]
|
Wybierz [lista, pred]
|
Fold[funkcja2, wartość, lista]
|
Zastosuj[Plus, lista]
|
C# |
x => x
|
(argumenty) => wyr
|
Enumerable.Select(list, func)
|
Wymaga refleksji |
Enumerable.Where(list, pred)
|
Enumerable.Aggregate(list, func2)
|
Enumerable.Sum(lista)
|
Visual Basic .NET |
Funkcja(x) x
|
Funkcja(argumenty) wyraż
|
|||||
F # (można również użyć Enumerable) |
identyfikator (wbudowany)
|
zabawny wzór -> wyr
|
Lista funkcji Seq.map
|
Seq.filter lista pred
|
Seq.fold func2 val lista
|
Lista sum sekw
|
Operacje numeryczne na listach
comp
- funkcja binarna, która zwraca wartość wskazującą kolejność sortowania (liczba całkowita w większości języków).
sortować | maks | min | |
---|---|---|---|
Pyton |
posortowane (lista)
|
maks(lista)
|
min(lista)
|
Matematyka |
Sortuj[lista]
|
Maks.[lista]
|
min[lista]
|
C# |
Enumerable.OrderBy(lista, comp)
|
Enumerable.Max(lista, func)
|
Enumerable.Min(lista, func)
|
Visual Basic .NET | |||
F# |
Sortuj według kolejności
|
sek.maks
|
sek. min
|
Iteracje na listach
Grupuj według | |
---|---|
Pyton |
itertools.groupby(lista, funkcja)
|
Matematyka |
Grupuj według[lista, funkcja]
|
C# |
Enumerable.GroupBy(lista, func)
|
Visual Basic .NET | |
F# | seq.groupBy lista func |
Generowanie zestawień za pomocą narzędzi kombinatoryki
- rozpocznij
- pierwszą wartość zakresu.
- skokowy
- przyrost zakresu.
- policz
- liczbę elementów w zakresie.
- ostatnia
- włącznie ostatnia wartość zakresu.
- koniec
- wyłącznej ostatniej wartości zakresu.
Generuj zasięg (leniwie) | Nieskończony zasięg (leniwie) | |
---|---|---|
Pyton |
xrange(początek, koniec, krok) (Python 2)
|
itertools.count(start, krok)
|
C# |
Enumerable.Range(początek, liczba)
|
Enumerable.Range(start, Int32.MaxValue)
|
Visual Basic .NET | ||
F# |
seq { start..krok..ostatni } |
Seq.initInfinite func
|