Skip to content

Commit 70c3aef

Browse files
committed
Update all things
1 parent 10e1dbd commit 70c3aef

File tree

155 files changed

+6527
-3487
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

155 files changed

+6527
-3487
lines changed

CONTRIBUTING.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
## Licensing
55

6-
By opening a pull request to this repository, you agree to provide your work under the [project license](LICENSE.md). Also, you agree to grant such license of your work as is required for the purposes of future print editions to @DrBoolean. Should your changes appear in a printed edition, you'll be included in the contributors list.
6+
By opening a pull request to this repository, you agree to provide your work under the [project license](LICENSE). Also, you agree to grant such license of your work as is required for the purposes of future print editions to @DrBoolean. Should your changes appear in a printed edition, you'll be included in the contributors list.
77

88
## Small Corrections
99

@@ -20,16 +20,16 @@ explain yourself.
2020
Translations to other languages are highly encouraged. Each official translation will be held as a separate repository in the [MostlyAdequate organization](https://github.com/MostlyAdequate) and linked from the English version book.
2121
Since each translation is a different repository, we can also have different maintainers for each project.
2222

23-
### Creating a new translation repo
23+
### Creating a New Translation Repo
2424

2525
In order to create a new translation, you need to follow these steps:
2626

2727
* Fork the [main repo](https://github.com/MostlyAdequate/mostly-adequate-guide).
2828
* Add yourself to the watch list of the main repo, to keep up with changes.
2929
* When translating chapters, **create NEW files with suffix of your language**.
30-
* For example, Spanish tranlation for `ch1.md` will be on `ch1-es.md`.
30+
* For example, Spanish tranlation for `ch01.md` will be on `ch01-es.md`.
3131
* Open a [new issue](https://github.com/MostlyAdequate/mostly-adequate-guide/issues/new) and ask to be part of the organization.
3232
* Transfer the repo to the organization.
3333
* Merge new content from the main repo.
3434
* keep translating...
35-
* Rinse/repeat last too steps until the book is done.
35+
* Rinse/repeat last two steps until the book is done.

FAQ.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ let maybeNumber = map(f, maybeString) // Maybe(6)
5656
> see [#77], [#192]
5757
5858
Should you haven't reached it yet, you may have a look at the [Chapter
59-
6](https://github.com/MostlyAdequate/mostly-adequate-guide/blob/master/ch6.md) which presents a
59+
6](https://github.com/MostlyAdequate/mostly-adequate-guide/blob/master/ch06.md) which presents a
6060
simple flickr application.
6161
Other examples are likely to come later on. By the way, feel free to share with us your
6262
experience!
@@ -103,9 +103,9 @@ A glossary/vade mecum will come at the end to synthesize all these notions.
103103
> see [#198]
104104
105105
Most of the time, those methods are defined in specific vendor libraries such as `ramda` or
106-
`underscore`. You should also have a look at
107-
[support.js](https://github.com/MostlyAdequate/mostly-adequate-guide/blob/master/code%2Fpart1_exercises%2Fsupport.js)
108-
in which we define several implementations used for the exercises. Those functions are really
106+
`underscore`. You should also have a look at [Appendix A](./appendix_a.md),
107+
[Appendix B](./appendix_b.md) and [Appendix C](./appendix_c.md) in which we define
108+
several implementations used for the exercises. Those functions are really
109109
common in functional programming and even though their implementations may vary a bit, their
110110
meanings remain fairly consistent between libraries.
111111

LICENSE.md LICENSE

-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,3 @@
33
http://creativecommons.org/licenses/by-sa/4.0/
44

55
* All artwork randomly stolen from google image search so the license doesn't apply. Please let me know if any artwork is yours and I'll give credit or remove.
6-

README.md

+58-32
Original file line numberDiff line numberDiff line change
@@ -4,56 +4,74 @@
44

55
이 책은 일반적인 함수형 프로그래밍 패러다임에 대한 책이다. 우리는 세계에서 가장 유명한 함수형 언어인 '자바스크립트'를 사용할 것이다. 현재의 자바스크립트 관련 문화가 주로 명령형imperative 패러다임이기 때문에, 이런 선택이 조금은 잘못된 것 아닌가 하고 느낄 지도 모르겠다. 하지만 다음과 같은 이유로, 나는 자바스크립트를 활용하는 것이 FP를 배우는 데 가장 좋은 선택이 될 수 있다고 믿는다.
66

7-
* **매일 업무에 자바스크립트를 사용하고 있는 프로그래머가 많다**
7+
- **매일 업무에 자바스크립트를 사용하고 있는 프로그래머가 많다**
88

9-
따라서, 소수만 좋아하는 함수형 프로그래밍 언어에서 자잘한 토이 프로젝트에나 적용해 보는 대신, 실전에서 매일매일 자신이 배운 함수형 프로그래밍 지식을 적용하고 연습할 수 있다.
9+
따라서, 소수만 좋아하는 함수형 프로그래밍 언어에서 자잘한 토이 프로젝트에나 적용해 보는 대신, 실전에서 매일매일 자신이 배운 함수형 프로그래밍 지식을 적용하고 연습할 수 있다.
1010

11+
- **프로그램을 작성하기 위해 필요한 여러가지 다른 내용을 다시 배울 필요가 없다.**
1112

12-
* **프로그램을 작성하기 위해 필요한 여러가지 다른 내용을 다시 배울 필요가 없다.**
13+
순수 함수형 언어에서는 모나드monad의 도움 없이 변수의 로그를 찍어보거나, DOM 노드를 읽어볼 수 없다. 하지만 자바스크립트에서는 코드 기반을 더 깔끔하게 유지하기 위해서 그런 기능을 살짝살짝 사용할 수 있다. 또한, 자바스크립트가 다양한 패러다임을 지원하기 때문에, 여러분이 잘 모르는 부분이 있다면 최후의 수단으로 기존의 방식을 활용해 문제를 활용할 수도 있다.
1314

14-
순수 함수형 언어에서는 모나드monad의 도움 없이 변수의 로그를 찍어보거나, DOM 노드를 읽어볼 수 없다. 하지만 자바스크립트에서는 코드 기반을 더 깔끔하게 유지하기 위해서 그런 기능을 살짝살짝 사용할 수 있다. 또한, 자바스크립트가 다양한 패러다임을 지원하기 때문에, 여러분이 잘 모르는 부분이 있다면 최후의 수단으로 기존의 방식을 활용해 문제를 활용할 수도 있다.
15+
- **자바스크립트는 최상급의 함수형 코드를 작성할 수 있는 모든 기능을 완전히 지원한다.**
1516

17+
소수의 라이브러리만 추가하면 하스켈Haskell이나 스칼라Scala와 같은 언어가 제공하는 기능을 흉내낼 수 있는 모든 특징을 활용할 수 있다. 객체 지향 프로그래밍이 현재 업계를 지배하고 있지만, 자바스크립트의 OOP는 분명 약간 이상하다. 이는 마치 고속도로를 벗어나서 캠핑을 하거나, 구두 위에 고무덧신galoshes을 신고 탭댄스를 추는 것과 같다. `this`가 부지중에 바뀌지 않도록 `bind`를 여기저기서 사용해야 하며, (아직) 클래스class도 없고, `new` 키워드를 빼먹은 경우 생기는 이상한 작동을 막기 위한 여러가지 장치를 만들어야 하고, 클로저closure를 통해서만 전용private 멤버를 정의할 수 있다. 일반적인 프로그래머에게 이보다는 FP(함수형 프로그래밍)가 더 자연스러워 보인다.
1618

17-
* **자바스크립트는 최상급의 함수형 코드를 작성할 수 있는 모든 기능을 완전히 지원한다.**
19+
정적 타입을 제공하는 함수형 언어가 의심할 여지 없이 이 책에서 설명하는 스타일로 코딩하는 가장 좋은 환경일 것이다. 자바스크립트는 단지 함수형 패러다임을 배우는 수단일 뿐이며, 그 패러다임을 적용하는 것은 여러분에게 달려있다. 운 좋게도, 함수형 패러다임에 접근하는 경로는 수학적이며, 따라서 어떤 어디에서든 통할 수 있다. 이 책을 다루고 나면, 수학쪽으로 경도된 환경이라면 스위프트제드swiftz, 스칼라제드scalaz, 하스켈, 퓨어스크립트purescript 등을 막론하고 편안함을 느낄 수 있을 것이다.
1820

19-
소수의 라이브러리만 추가하면 하스켈Haskell이나 스칼라Scala와 같은 언어가 제공하는 기능을 흉내낼 수 있는 모든 특징을 활용할 수 있다. 객체 지향 프로그래밍이 현재 업계를 지배하고 있지만, 자바스크립트의 OOP는 분명 약간 이상하다. 이는 마치 고속도로를 벗어나서 캠핑을 하거나, 구두 위에 고무덧신galoshes을 신고 탭댄스를 추는 것과 같다. `this`가 부지중에 바뀌지 않도록 `bind`를 여기저기서 사용해야 하며, (아직) 클래스class도 없고, `new` 키워드를 빼먹은 경우 생기는 이상한 작동을 막기 위한 여러가지 장치를 만들어야 하고, 클로저closure를 통해서만 전용private 멤버를 정의할 수 있다. 일반적인 프로그래머에게 이보다는 FP(함수형 프로그래밍)가 더 자연스러워 보인다.
20-
21-
정적 타입을 제공하는 함수형 언어가 의심할 여지 없이 이 책에서 설명하는 스타일로 코딩하는 가장 좋은 환경일 것이다. 자바스크립트는 단지 함수형 패러다임을 배우는 수단일 뿐이며, 그 패러다임을 적용하는 것은 여러분에게 달려있다. 운 좋게도, 함수형 패러다임에 접근하는 경로는 수학적이며, 따라서 어떤 어디에서든 통할 수 있다. 이 책을 다루고 나면, 수학쪽으로 경도된 환경이라면 스위프트제드swiftz, 스칼라제드scalaz, 하스켈, 퓨어스크립트purescript 등을 막론하고 편안함을 느낄 수 있을 것이다.
21+
### (영문판) 온라인으로 보기 - 한글판은 나중에 제공
2222

23-
### (영문판) 기트북(더 보기 좋은 환경을 제공함) - 한글판은 나중에 제공
23+
For a best reading experience, [read it online via Gitbook](https://mostly-adequate.gitbooks.io/mostly-adequate-guide/).
2424

25-
* [온라인에서 읽기](https://drboolean.gitbooks.io/mostly-adequate-guide/content/)
26-
* [EPUB 다운로드](https://www.gitbook.com/download/epub/book/drboolean/mostly-adequate-guide)
27-
* [Mobi(킨들Kindle) 다운로드](https://www.gitbook.com/download/mobi/book/drboolean/mostly-adequate-guide)
25+
- Quick-access side-bar
26+
- In-browser exercises
27+
- In-depth examples
2828

29-
### (영문판) 직접 만드는 방법
29+
## Play Around with Code
30+
31+
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.
32+
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:
3033

34+
```bash
35+
$ npm i @mostly-adequate/support
3136
```
32-
git clone https://github.com/DrBoolean/mostly-adequate-guide.git
3337

34-
cd mostly-adequate-guide/
35-
npm install gitbook-cli -g
36-
gitbook init
38+
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:
39+
40+
```bash
41+
$ npm run ch04
42+
```
43+
44+
## (영문판) 다운로드
3745

38-
brew update
39-
brew install Caskroom/cask/calibre
46+
- [Download PDF](https://www.gitbook.com/download/pdf/book/mostly-adequate/mostly-adequate-guide)
47+
- [Download EPUB](https://www.gitbook.com/download/epub/book/mostly-adequate/mostly-adequate-guide)
48+
- [Download Mobi (Kindle)](https://www.gitbook.com/download/mobi/book/mostly-adequate/mostly-adequate-guide)
49+
- [온라인에서 읽기](https://drboolean.gitbooks.io/mostly-adequate-guide/content/)
50+
- [EPUB 다운로드](https://www.gitbook.com/download/epub/book/drboolean/mostly-adequate-guide)
51+
- [Mobi(킨들Kindle) 다운로드](https://www.gitbook.com/download/mobi/book/drboolean/mostly-adequate-guide)
52+
53+
### (영문판) 직접 만드는 방법
4054

41-
gitbook mobi . ./functional.mobi
55+
```
56+
git clone https://github.com/MostlyAdequate/mostly-adequate-guide.git
57+
cd mostly-adequate-guide/
58+
npm install
59+
npm run setup
60+
npm run generate-pdf
61+
npm run generate-epub
4262
```
4363

64+
> Note! To generate the ebook version you will need to install `ebook-convert`. [Installation instructions](https://toolchain.gitbook.com/ebook.html#installing-ebook-convert).
65+
4466
한글판을 직접 만드는 방법은 다음과 같다.
4567

4668
```
4769
git clone https://github.com/MostlyAdequate/mostly-adequate-guide-kr.git
48-
4970
cd mostly-adequate-guide-kr/
50-
npm install gitbook-cli -g
51-
gitbook init
52-
53-
brew update
54-
brew install Caskroom/cask/calibre
55-
56-
gitbook mobi . ./functional.mobi
71+
npm install
72+
npm run setup
73+
npm run generate-pdf
74+
npm run generate-epub
5775
```
5876

5977
# 목차
@@ -72,10 +90,18 @@ gitbook mobi . ./functional.mobi
7290

7391
[FAQ.md](FAQ.md) 를 보라.
7492

93+
# 향후 계획
7594

95+
- **1부** (1-7장)는 기본적인 내용에 대한 안내다. 초고에서 오류를 발견할 때마다 내용을 갱신할 것이다. 도움의 손길을 언제든 환영한다!
96+
- **2부** (8-13장)는 펑터functor나 모나드monad로부터 순회가능traversable에 이르는 여러 타입 클래스type class에 대해 다룬다. 변환기transformer나 순수한 적용pure application에 대해 다룰 여유가 있기를 바란다.
97+
- **3부** (14장 이후)는 실용적인 프로그래밍과 학술적인 불합리성 사이의 미세한 차이를 가늠해 볼 것이다. 코모나드comonad, f-대수f-algebra, 프리 모나드free monad, 요네다yoneda 및 다른 카테고리 이론적인 구성요소들을 살펴볼 것이다.
7698

77-
# 향후 계획
99+
---
78100

79-
* **1부** (현재 1-7장)는 기본적인 내용에 대한 안내다. 초고에서 오류를 발견할 때마다 내용을 갱신할 것이다. 도움의 손길을 언제든 환영한다!
80-
* **2부** (현재 8장 이상)는 펑터functor나 모나드monad로부터 순회가능traversable에 이르는 여러 타입 클래스type class에 대해 다룬다. 변환기transformer나 순수한 적용pure application에 대해 다룰 여유가 있기를 바란다.
81-
* **3부** 는 실용적인 프로그래밍과 학술적인 불합리성 사이의 미세한 차이를 가늠해 볼 것이다. 코모나드comonad, f-대수f-algebra, 프리 모나드free monad, 요네다yoneda 및 다른 카테고리 이론적인 구성요소들을 살펴볼 것이다.
101+
<p align="center">
102+
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">
103+
<img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" />
104+
</a>
105+
<br />
106+
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
107+
</p>

0 commit comments

Comments
 (0)