{"id":16955686,"url":"https://github.com/rcdexta/clojure_koans","last_synced_at":"2025-10-27T00:05:20.442Z","repository":{"id":16909065,"uuid":"19670130","full_name":"rcdexta/clojure_koans","owner":"rcdexta","description":"Learning clojure constructs by fixing failing tests","archived":false,"fork":false,"pushed_at":"2014-05-11T15:46:27.000Z","size":384,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-26T08:45:37.414Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rcdexta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-11T15:44:50.000Z","updated_at":"2014-05-11T15:46:27.000Z","dependencies_parsed_at":"2022-07-14T20:17:22.505Z","dependency_job_id":null,"html_url":"https://github.com/rcdexta/clojure_koans","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcdexta%2Fclojure_koans","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcdexta%2Fclojure_koans/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcdexta%2Fclojure_koans/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcdexta%2Fclojure_koans/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rcdexta","download_url":"https://codeload.github.com/rcdexta/clojure_koans/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244801178,"owners_count":20512611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T22:12:58.641Z","updated_at":"2025-10-27T00:05:20.342Z","avatar_url":"https://github.com/rcdexta.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Clojure Koans\n\nThe Clojure Koans are a fun and easy way to get started with Clojure - no\nexperience assumed or required.  Just follow the instructions below to start\nmaking tests pass!\n\n\n### Getting Started\n\nThe easiest and fastest way to get the koans up and running is to [download the\nlatest zip file from Github](https://github.com/functional-koans/clojure-koans/downloads).\nThis way, you'll have all the dependencies you need, including Clojure itself\nand JLine, and you can skip the rest of this section (skip to \"Running the\nKoans\").\n\nIf you're starting from a cloned or forked repo, that's cool too. This way\nyou'll be able to track your progress in Git, and see how your answers compare\nto others, by checking out the project's Network tab. You might want to create\nyour own branch - that way if you pull back the latest koans from master, it'll\nbe a bit easier to manage the inevitable conflicts if we make changes to\nexercises you've already completed.\n\nThe only things you'll need to run the Clojure Koans are:\n\n- JRE 1.5 or higher\n- [clojure-1.5.1.jar](http://repo1.maven.org/maven2/org/clojure/clojure/1.5.1/clojure-1.5.1.zip)\n\nYou can use [Leiningen](http://github.com/technomancy/leiningen) to\nautomatically install the Clojure jar in the right place. Leiningen will also\nget you a couple more jarfiles, including JLine, which allows you some of the\nfunctionality of readline (command-line history, for example).\n\n### Installing dependencies\n\nDependencies are installed automatically with lein 2, but if for some reason\nyou're on lein 1 and can't upgrade, you'll need to run\n\n`lein deps`\n\nwhich will download all dependencies you need to run the Clojure koans.\n\nI strongly recommend that you upgrade to lein 2 instead!\n\n### Running the Koans\n\nIf you're running from the zipfile, simply run\n\n`script/run` on Mac/\\*nix\n\n`script\\run` on Windows\n\nIf you're running from a checkout using lein 2, run the koans via\n\n`lein koan run`\n\nIt's an auto-runner, so as you save your files with the correct answers, it will\nadvance you to the next koan or file (conveniently, all files are prefixed with\nthe sequence that you should follow).\n\nYou'll see something like this:\n\n    Now meditate on /home/colin/Projects/clojure-koans/src/koans/01_equalities.clj:3\n    ---------------------\n    Assertion failed!\n    We shall contemplate truth by testing reality, via equality.\n    (= __ true)\n\nThe output is telling you that you have a failing test in the file named\n`01_equalities.clj`, on line 3. So you just need to open that file up and make\nit pass!  You'll always be filling in the blanks to make tests pass.\nSometimes there could be several correct answers (or even an infinite number):\nany of them will work in these cases. Some tests will pass even if you replace\nthe blanks with whitespace (or nothing) instead of the expected answer. Make sure\nyou give one correct expression to replace each blank.\n\nThe koans differ from normal TDD in that the tests are already written for you,\nso you'll have to pay close attention to the failure messages, because up until\nthe very end, making a test pass just means that the next failure message comes\nup.\n\nWhile it might be easy (especially at first) to just fill in the blanks making\nthings pass, you should work thoughtfully, making sure you understand why the\nanswer is what it is.  Enjoy your path to Clojure enlightenment!\n\n\n### Trying more things out\n\nThere's a REPL (Read-Evaluate-Print Loop) included in the Clojure Koans. Just\nrun:\n\n`script/repl` on Mac/\\*nix\n\n`script\\repl` on Windows\n\nIf you're on lein 2, `lein repl` is what you want instead.\n\nHere are some interesting commands you might try, once you're in a running REPL:\n\n```clojure\n(find-doc \"vec\")\n(find-doc #\"vec$\")\n(doc vec)\n```\n\nAnd if those still don't make sense:\n\n```clojure\n(doc doc)\n(doc find-doc)\n```\n\nwill show you what those commands mean.\n\nYou can exit the REPL with `CTRL-d` on any OS.\n\n\n### Contributing\n\nPatches are encouraged!  Make sure the answer sheet still passes\n(`lein koan test`), and send a pull request.\n\nThe file ideaboard.txt has lots of good ideas for new koans to start, or things\nto add to existing koans.  So write some fun exercises, add your answers to\n`resources/koans.clj`, and we'll get them in there!\n\nPlease follow the guidelines in\nhttp://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html for\ncommmit messages, and put your code in a feature branch (not master) before\nmaking the pull request. This makes patches easier to review.\n\nFeel free to contact me (Colin Jones / trptcolin) on Github or elsewhere if you\nhave any questions or want more direction before you start pitching in.\n\n\n### Contributors\n\nhttps://github.com/functional-koans/clojure-koans/contributors\n\n\n### Credits\n\nThese exercises were started by [Aaron Bedra](http://github.com/abedra) of\n[Relevance, Inc.](http://github.com/relevance) in early 2010, as a learning\ntool for newcomers to functional programming. Aaron's macro-fu makes these\nkoans extremely simple and fun to use, and to improve upon, and without\nRelevance's initiative, this project would not exist.\n\nUsing the [koans](http://en.wikipedia.org/wiki/koan) metaphor as a tool for\nlearning a programming language started with the\n[Ruby Koans](http://rubykoans.com) by [EdgeCase](http://github.com/edgecase).\n\n\n### License\n\nThe use and distribution terms for this software are covered by the\nEclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)\nwhich can be found in the file epl-v10.html at the root of this distribution.\nBy using this software in any fashion, you are agreeing to be bound by\nthe terms of this license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcdexta%2Fclojure_koans","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frcdexta%2Fclojure_koans","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcdexta%2Fclojure_koans/lists"}