
Programowanie funkcyjne (lub programowanie funkcjonalne) to metodyka programowania będąca odmianą programowania deklaratywnego, w której funkcje należą do wartości podstawowych, a nacisk kładzie się na wartościowanie (często rekurencyjnych) funkcji.
Korzysta na tym także biblioteka underscore.js, która również wspiera programowanie funkcyjne w JavaScript.
Biblioteka underscore.js i programowanie funkcyjne
Underscore.js jest biblioteką JavaScript, oferującą wiele ułatwień, które oferuje Prototype.js (czy też np. język Ruby!), jednak nie przeciąża natywnych obiektów JS.
Na bibliotece tej bazuje inna popularna biblioteka – Backbone.js. Autor obu bibliotek stworzył także CoffeeScript.
Przykłady użycia
_.map([1, 2, 3], function(num){ return num * 3; }); // => [3, 6, 9]
W tak prosty sposób następuje mapowanie po wszystkich wartościach z listy podanej jako argument.
_.times(4, function() { console.log("JS") });
Ten przykład wypisze w konsoli cztery razy napis „JS”.
Underscore.js zawiera ponad 100 użytecznych funkcji, takich jak each, map, filter, find, invoke.
Do tego są funkcje narzędziowe.
Przykład – noConflict:
var underscore = _.noConflict(); underscore.times(4, function() { console.log("JS") });
W bibliotece tej znajdziemy całą gamę możliwości. Nie zabraknie oczywiście wsparcia dla takich mechanizmów jak refleksja.
Przykład:
_.functions(_); // => ["all", "any", "bind", "bindAll", "clone", "compact", ...
Funkcja functions_.functions(object), posiadająca także alias „methods”, zwraca posortowaną listę nazw wszystkich metod w obiekcie.
Nie zabraknie takich funkcji jak escape:
_.escape('Curly, Larry & Moe'); // => "Curly, Larry & Moe" _.unescape('Curly, Larry & Moe'); // => "Curly, Larry & Moe"
Ekstrakcja wartości z obiektu? Pewnie:
_([1, 2, 3]).value(); // => [1, 2, 3]
I wiele innych możliwości. Wystarczy spędzić dłuższą chwilę nad dokumentacją. Underscore.js to rewelacyjna biblioteka. Nie tylko pod względem możliwości jakie oferuje, ale też sposobu w jaki je oferuje.
Zasoby
– funkcje anonimowe i domknięcia
http://javascript-html5-tutorial.pl/geek-lambda-funkcje-anonimowe-domkniecia-w-javascript.html
– functional programming
http://eloquentjavascript.net/1st_edition/chapter6.html
– strona projektu underscore.js
Polecam także „Functional JavaScript” – O’Reilly. Ta książka pozwala znakomicie zagłębić się w temat.
Do pobrania strona testowa (wybrane funkcje underscore):
http://directcode.eu/samples/underscore.zip
Podsumowanie
Programowanie funkcyjne w JavaScript jest interesującym zagadnieniem. Pokazuje to m.in. biblioteka underscore.js, która jest bardzo zgrabnym narzędziem.
thankyou.js