Skip to content

Latest commit

 

History

History
 
 

Functional JavaScript

Build Status

This tiny book may only take you 2 hours to read, but it may take you to a journey of experiencing almost all the functional way of writing code in JavaScript. And It will cover some of the new feature come with ECMAScript 6 like arrow function, pattern matching etc. Further more, I will list the implementations of some fancy typeclasses from Haskell in JavaScript.

Эта малюсенькую книгу можно прочитать всего часа за два, но за это время вы пройдете весь путь по написанию функционального кода на JavaScript. В книге будут затронуты некоторые новшества из ECMAScript 6, такие как стрелочные функции (arrow function), сравнение с образцом (pattern matching) и т.п. В дальнейшем я буду добавлять JavaScript реализации классов из Haskell.


If you're kind of:

Plz read Learn JavaScript first, but if you're just like:

this book may help you functional stuff at some point.

Если ваши знания JavaScript можно проиллюстрировать картинкой ниже:

Пожалуйста, прочитайте вначале эту книгу Learn JavaScript, но если вы относите себя к такому персонажу:

то эта книга поможет подннять ваш уровень функционального программирования


I chose Eweda as functional library for almost all examples.

Я выбрал функциональную библиотеку Eweda для иллюстрирования примеров этой книги.

Comment Eweda is stick with more pure academic ideas but unpractical due to Javascript's poor handling of recursion. Here I just use it for example and show the functional idea, but if you want to use such api in production, please use Ramda.

Eweda придерживается чистых, академических идей функционального программирования и совершенно непрактична при применении рекурсии в JavaScript. Я использую ее только для иллюстрирования функциональных принципов и идей, но если вы хотите использовать подобное функционально API в продакшене, используйте Ramda.

Comment Why not Underscore Short story: no auto curry. Long story: checkout chapter 2.

Почему не Underscore Коротко: нет автоматического каррирования. Подлиннее: читайте главу 2.


Note In case I will write some code in ECMAScript 6 or (draft) standard, you better use firefox to run all those (who looks weird) examples. Simply tell what feature your browser has implement here). Anyway, most long example will be followed by a jsbin.

В некоторых примерах я буду писать код на ECMAScript 6 или использовать методы, не вошедшие в стандарт. Для корректного воспроизведения примеров используйте firefox (либо Chrome, на момент перевода многие методы уже поддерживаются многими браузерами). Вы можете проверить, что поддерживает ваш браузер здесь. Так же многие примеры будут вставлены через jsbin.


Спасибо @scott за перевод на английский язык.
Спасибо @nanomen за перевод на русский язык.