clojure-koans/README.md

177 lines
7 KiB
Markdown
Raw Normal View History

# Clojure Koans
Для того чтобы приступить к решению Clojure коанов, следуйте инструкциям ниже.
2010-01-15 01:13:17 +00:00
2018-03-13 12:11:09 +00:00
## Установка
2010-01-15 01:13:17 +00:00
Прежде всего клонируйте репозиторий или создайте свой форк. Далее вы можете создать отдельную ветку
2018-03-13 12:11:09 +00:00
чтобы избежать конфликтов при обновлении коанов.
Способы установки зависимостей:
- Установите все зависимости локально
- Используйте Vagrant
- Используйте Docker
Инструкции для каждого для реализации каждого способа ниже.
### Локальная установка
Вам необходимо:
- JDK (от 6 до 8 версии)
- [Leiningen](http://github.com/technomancy/leiningen), инструмент сборки для Clojure
После этого выполните в клонированной папке:
2017-05-03 20:27:23 +00:00
```
lein repl
```
2010-01-15 01:13:17 +00:00
Leiningen скачает все зависимости, затем наберите `(exit)` чтобы выйти.
### Установка, используя Vagrant
Установите [Vagrant](https://www.vagrantup.com/) и
[VirtualBox](https://www.virtualbox.org).
В корневой директории выполните:
```
vagrant up
vagrant ssh
cd /vagrant
lein koan run
```
### Установка, используя Docker
Установите [Docker](https://www.docker.com/), затем выполните:
для запуска коанов:
```
docker run --rm -it -v $(pwd):/app -w /app clojure lein koan run
```
для запуска REPL:
```
docker run --rm -it -v $(pwd):/app -w /app clojure lein repl
```
## Запуск коанов
2010-01-15 01:13:17 +00:00
Команда:
`lein koan run`
Для запуска из REPL:
`(exec "run")`
В любом случае программа запустится и будет ожидать сохранения файла с коанами
и даст вам знать правильно ли было решение или нет.
Каждый коан сопровождён указаниями и направляющими вопросами.
Пример:
2010-11-01 18:13:48 +00:00
Now meditate on /home/colin/Projects/clojure-koans/src/koans/01_equalities.clj:3
---------------------
Assertion failed!
2010-11-01 18:13:48 +00:00
We shall contemplate truth by testing reality, via equality.
(= __ true)
2010-11-01 18:13:48 +00:00
2018-03-13 12:11:09 +00:00
Программа сообщает вам о том, что в файле `01_equalities.clj`, строка 3 тест не пройден
и коан не решён. Подумайте и внесите изменения!
2018-03-13 12:11:09 +00:00
Вам всегда будет предложено заполнить пустое место, обозначенное символами подчёркивания.
Иногда способов решения несколько, некоторые тесты успешно пройдут даже при замене символов подчёркивания
на пробел.
2010-11-01 18:13:48 +00:00
2018-03-13 12:11:09 +00:00
Коаны отличаются от TDD, т.к. тесты уже написаны за вас.
Следите за сообщениями о непройденном тесте — они будут появляться вплоть до решения всех коанов.
Соответственно при прохождении одного коана, вы увидите собщение об ошибке при прохождении следующего,
ещё не решённого вами коана. Вы решаете следующий и так далее, пока не решите последний.
2010-11-01 18:13:48 +00:00
2018-03-13 12:11:09 +00:00
Постарайтесь обдумывать ваше решение и вполне понимать почему правильный ответ именно таков.
Наслаждайтесь вашим путём к Clojure-просветлению!
2010-10-29 15:43:32 +00:00
2018-03-13 12:11:09 +00:00
## Используйте REPL
2010-11-02 01:12:00 +00:00
2018-03-13 12:11:09 +00:00
Помимо коанов, практикуйтесь и читайте документацию используя интерактивную командную строку:
2010-11-02 01:12:00 +00:00
2017-05-03 20:27:23 +00:00
```
lein repl
```
2010-11-02 01:12:00 +00:00
2018-03-13 12:11:09 +00:00
Вводите выражения и программа будет сразу выводить результат — это очень удобно и
2018-03-13 12:16:26 +00:00
ускоряет изучение языка.
2018-03-13 12:11:09 +00:00
Попробуйте ввести эти команды:
2010-11-02 01:12:00 +00:00
2011-09-24 17:45:43 +00:00
```clojure
(find-doc "vec")
(find-doc #"vec$")
(doc vec)
```
2010-11-02 01:12:00 +00:00
2018-03-13 12:11:09 +00:00
И эти:
2010-11-02 01:12:00 +00:00
2011-09-24 17:45:43 +00:00
```clojure
(doc doc)
(doc find-doc)
```
2010-11-02 01:12:00 +00:00
2018-03-13 12:11:09 +00:00
Для окончания работы с REPL используйте `CTRL-d`, `(exit)`, или `(quit)`.
2017-05-03 20:27:23 +00:00
2010-11-02 01:12:00 +00:00
## Развитие
2010-10-29 15:43:32 +00:00
Убедитесь, что (`lein koan test`) пройдены и присылайте патчи в pull request.
2010-10-29 15:43:32 +00:00
Файл ideaboard.txt содержит различные идеи для реализации новых или изменения текущих коанов.
Ответы на упражнения пишите в `resources/koans.clj`!
Следуйте эти рекомендациям
http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html.
Для упрощения оценки ваших патчей, — сохраняйте код в feature ветку (не master) перед pull request.
2014-01-21 15:02:35 +00:00
Если у вас остались вопросы или нужны рекомендации,
связывайтесь со мной (Colin Jones / trptcolin) через Github или иным способом.
2010-10-29 15:43:32 +00:00
## Участники
https://github.com/functional-koans/clojure-koans/contributors
2018-03-15 13:43:21 +00:00
### Перевод на русский язык
[Alex Gorelov](https://github.com/brannx)
## Благодарность
Эти упражнения создавались [Aaron Bedra](http://github.com/abedra)
[Relevance, Inc.](http://github.com/relevance) в начале 2010 как инструмент
для изучения функционального программирования для новичков.
Макрос-фу Аарона делали эти коаны доступными для использования и изучения языка,
а также для их дальнейшей разработки и улучшения.
Без инициативы со стороны Relevance Inc. этот проект не был бы осуществлён.
Использование впервые [коанов](http://en.wikipedia.org/wiki/koan) в качестве метафоры
для обучающих упражнений было заслугой [Ruby Koans](http://rubykoans.com) от [EdgeCase](http://github.com/edgecase).
## Лицензия
The use and distribution terms for this software are covered by the
Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
which can be found in the file epl-v10.html at the root of this distribution.
By using this software in any fashion, you are agreeing to be bound by
the terms of this license.