mostly-adequate-guide README

The project's README from github.com/MostlyAdequate/mostly-adequate-guide. As one markdown file: README.md.

cover

About this book

This is a book on the functional paradigm in general. We'll use the world's most popular functional programming language: JavaScript. Some may feel this is a poor choice as it's against the grain of the current culture which, at the moment, feels predominately imperative. However, I believe it is the best way to learn FP for several reasons:

That said, typed functional languages will, without a doubt, be the best place to code in the style presented by this book. JavaScript will be our means of learning a paradigm, where you apply it is up to you. Luckily, the interfaces are mathematical and, as such, ubiquitous. You'll find yourself at home with Swiftz, Scalaz, Haskell, PureScript, and other mathematically inclined environments.

Read it Online

For a best reading experience, read it online via Gitbook.

Play Around with Code

To make the training efficient and not get too bored while I am telling you another story, make sure to play around with the concepts introduced in this book. Some can be tricky to catch at first and are better understood by getting your hands dirty. All functions and algebraic data-structures presented in the book are gathered in the appendixes. The corresponding code is also available as an npm module:

$ npm i @mostly-adequate/support

Alternatively, exercises of each chapter are runnable and can be completed in your editor! For example, complete the exercise_*.js in exercises/ch04 and then run:

$ npm run ch04

Download it

Find pre-generated PDF and EPUB as build artifacts of the latest release.

Do it yourself

⚠️ This project setup is now a bit old and thus, you may run into various issues when building this locally. We recommend to use node v10.22.1 and the latest version of Calibre if possible.

About the nodejs version

As the recommended node version (v10.22.1) is a bit old now, is more than likely that you do not have it installed on your system. You can have multiple versions of nodejs installed on your system using nvm. Refer to that project to install it and then you will be able to:

nvm install 10.22.1
nvm install 20.2.0
nvm use 10.22.1
node -v // will show v10.22.1 
nvm use 20.2.0
node -v // will show v20.2.0

As this project has a .nvmrc file you can call nvm install and nvm use without specifying the node version:

// being anywhere inside this project
nvm install
node -v // will show v10.22.1

Complete sequence of commands

Considering the above about having nvm installed on your system, here is the complete sequence of commands to generate pdf and epub files by yourself:

git clone https://github.com/MostlyAdequate/mostly-adequate-guide.git
cd mostly-adequate-guide/
nvm install
npm install
npm run setup
npm run generate-pdf
npm run generate-epub

Note! To generate the ebook version you will need to install ebook-convert. Installation instructions.

Table of Contents

See SUMMARY.md

Contributing

See CONTRIBUTING.md

Translations

See TRANSLATIONS.md

FAQ

See FAQ.md

Plans for the future


Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

mostly-adequate-guide (MostlyAdequate/mostly-adequate-guide)

Searching Database…

Что это такое?«Mostly Adequate Guide to FP» — это бесплатная книга, которая учит концепциям функционального программирования на JavaScript: от чистых функций и композиции до функторов, монад и других идей из теории категорий.
Это библиотека для кода или просто книга, которую я читаю?В первую очередь это книга, которую читают главу за главой онлайн, в формате PDF или EPUB. Но фрагменты кода также упакованы как модуль npm, а в каждой главе есть готовый файл exercise.js, который можно запустить и решить в своём редакторе кода.
Как начать читать?Проще всего читать онлайн через GitBook: там есть боковая панель, упражнения и примеры прямо в браузере. Если нужна копия для чтения без интернета, готовые файлы PDF и EPUB прикреплены к последнему релизу на GitHub.
Легко ли собрать книгу у себя на компьютере?Не совсем: система сборки устарела, так что скорее всего придётся столкнуться с проблемами, если не установить конкретную старую версию Node и заранее не подготовить инструмент ebook-convert из Calibre.
Как устроена книга?В книге три части: часть 1 (главы 1–7) охватывает основы, такие как чистые функции, каррирование и композиция; часть 2 (главы 8–13) посвящена классам типов, например функторам и монадам, вплоть до траверсабл; часть 3 (глава 14 и далее) рассматривает комонады, f-алгебры, свободные монады и другие категорные конструкции.
Почему автор выбрал JavaScript, а не более чистый функциональный язык вроде Haskell?Потому что большинство читателей уже ежедневно используют JS, поэтому они могут практиковать ФП на реальном коде, а не на игрушечных проектах. К тому же JS достаточно гибок, чтобы новички могли опираться на привычные императивные навыки, пока учатся.
Могу ли я на самом деле практиковаться, пока читаю?Да: в каждой главе есть запускаемый файл exercise.js (например, exercises/ch04), который вы дописываете в своём редакторе, а затем запускаете, чтобы проверить свою работу.
Книга уже готова или ещё дорабатывается?Часть 1 описана как первоначальный черновик, который ещё исправляется, а части 2 и 3 значатся в планах на будущее, так что книга продолжает расти и меняться со временем.
Size
5.3 MB
Stars
23.8K
Age
11y
Commits · 90 Days