Това хранилище съдържа домашните от курса по Clojure. Те са разпределени в директориите tasks/
(за задачи) и challenges/
(за предизвикателства). Всяко е в собствена директория (например 01
), и във всяка има следните файлове:
README.markdown
- условиеsample_test.clj
- примерен тестtest.clj
- теста, с който проверявамеsolution.clj
- нашето решение
Очевидно, test.clj
и solution.clj
няма да бъдат публикувани преди крайния срок.
Ако искате да пуснете примерния тест, просто добавете файл solution.clj
в директорията на домашното, влезте в нея и изпълнете:
$ clj sample_test.clj
...където clj
е изпълнимото име на Clojure на вашата машина. Обърнете внимание, че в текущата директория трябва да има sample_test.clj
и solution.clj
.
Да изпълняваме clj sample_test.clj
след всяка промяна по solution.clj
е
дървен начин да работим с Clojure. Едно от най-яките неща в езика е начина,
по-който програмираме. Това е един интерактивен процес, в който пишем нещо
изпълняваме го веднага и виждаме резултатите в реално време, без да е нужно да
рестартираме приложението или въобще да напускаме текстовия редактор.
Предимствата от този начин за разработка са много.
За детайли как работи това, разгледайте nREPL.
Какво ни е нужно?
leiningen
редактор с nREPL интеграция
LightTable е редактора, който ви препоръчваме, ако нямате вече утвърден фаворит. За разлика от другите варианти, LightTable е създаден специално за Clojure и интеграцията с езика е вградена.
LigthTable е създаден с амбициозната цел да пребори част от глобалните проблеми, в програмирането и за това тук имаме иновативни инструмени, които няма никъде другаде.
Повече информация можете да намерите на:
- http://docs.lighttable.com/
- http://docs.lighttable.com/tutorials/full/
- https://github.com/LightTable/LightTable
- Отворете файла с решението
- Направете текущия редактор instarepl
Instarepl: Make current editor an instarepl
- Отворте конзолата в нов таб
Console: Open console in a tab
- Създайте нов tabset
Tabset: Add a tabset
- Преместете с мишката таба с конзолатa в новия tabset
;; -----------------------------------------------------------------------------
;; Solution
(defn from-digits [digits]
;; TODO:
)
;; -----------------------------------------------------------------------------
;; Playground
;;
;; Instarepl показва резултатите само на кода, който се изпълнява, за товa
;; трябва да извикаме функцията си. Удобно е в началото да ползваме този вариант
;; вместо да изпълняваме директно тестовете. В един по-късен момент ще изтрием
;; playground секцията и ще пуснем тестовете.
(form-digits [1 2 3 4])
;; -----------------------------------------------------------------------------
;; Tests
;;
;; Тук копирайте примерните тестове. След като изтриете playground секцията,
;; махнете `#_` и тестовете ще започнат да се изпълняват.
#_(do
(use 'clojure.test)
(deftest challenge-01-sample-test
(is (= (from-digits [4 2]) 42)))
(run-tests)
)
- Виждаме незабавно резултата от всяка промяна по-кода
- Често се налага да чистим конзолата
Console: Clear console
- Често е удобно да спираме / пускаме live mode-а
Instarepl: Toggle live mode
Основна част от това да сме продуктивни в текстовия си редактор е да имаме удобни клавишни комбинации за всички често използвани команди. Можете да реазгледате една примерна конфигурация тук.
Добра идея е да си сложите Paredit добавката и да я ползвате постоянно.
Emacs е най-предпочитаният редактор от Clojure хакерите в момента. За да започнете с Clojure и Emacs, следвайте инструкците тук.
Vim също е добър избор за Clojure. За да започнете с Clojure и Vim, следвайте инструкците тук.
Има грешка в условието и искате да изпратите корекция? Просто отворете pull request! Ако сте логнати в GitHub, може да го направите дори без да дърпате кода локално при вас.