G.....n
G.....n
http://vitiy.info/functional-pipeline-in-c11/
#cpp
#gindenpoleca - zachęcam do subskrybowania tagu, staram się wrzucać wszystkie ciekawe artykuły/rzeczy związane z programowaniem.
  • Najlepsze
  • Wszystkie komentarze
G.....n
G.....n
@KrzaQ2: Lambdy to narzędzie programowania funkcyjnego, a programowanie funkcyjne to zło. Wiem, bo czytałem na reddicie.
KrzaQ2
@losiul: jak to niczym się nie róƶnią?

x => x + x
vs

[](int x){ return x+x; }
Owszem, są znacznie bardziej konfigurowalne. Kosztem czytelności. (co znakomicie widać na podlinkowanym przykładzie)
KrzaQ2
To pokazuje o ile czytelniejsze są lambdy D/C#/Javy od C++ :/
k.....n
k.....n
@Ginden: to nie czytaj za dużo głupot ;)
l.....l
l.....l
@KrzaQ2: czepiasz się, przynajmniej jeśli chodzi o C# vs C++ - prawie niczym się nie różnią, a C++'owe są o wiele bogatsze.
@Ginden: A tak BTW: Programowanie funkcyjne po prostu jest sporo mniej czytelne..
l.....l
l.....l
@KrzaQ2: niet - ten przykład z C# tak naprawdę w prawdziwym kodzie wyglądać będzie tak:

(int x) => x + x
a w wypadku lambdy która ma więcej niż 1 linijkę i tak treść funkcji musisz wziąć w klamry. Ergo, prawie bez różnicy.
KrzaQ2
@losiul: Jak się bawiłem linq to nigdy nie musiałem podawać typu, nawet jak to były jakieś wymyślne klasy. Pisanie kilku selectów i map lambdami D/C# a C++ to niebo a piekło.
G.....n
G.....n
@losiul: Po co deklarować typ zmiennej w lambdzie?
Co więcej - najważniejsze są lambdy jednolinijkowe, bo to one pozwalają na uniknięcie najwięcej kodu (kilkanaście znaków vs. pętla), są trywialne w optymalizacji dla kompilatora. Python ma tylko jednowyrażeniowe lambdy i nie robi to dużego problemu.
l.....l
l.....l
@Ginden: Np wtedy kiedy nie masz zdefiniowanej wcześniej deklaracji lambdy - np. przy lambdach szablonowych, kompilator skądś musi wiedzieć czego tam użyć. Jest też pewnie parę innych przykładów, np kiedy chcesz uniknąć jakiejś konwersji.
Lambdy wielolinijkowe też mają sens. Np dwu : >. Bo czasem zamiast bawić się w wygibasy wygodniej i czytelniej jest użyć dwóch linijek ..
Choć w C++ wykorzystywałem też całkiem długie i choć nie uważam tego