clojure / clojure-site Goto Github PK
View Code? Open in Web Editor NEWclojure.org site
Home Page: https://clojure.org
License: Eclipse Public License 1.0
clojure.org site
Home Page: https://clojure.org
License: Eclipse Public License 1.0
* Clojure * Copyright (c) Rich Hickey. All rights reserved. * The use and distribution terms for this software are covered by the * Eclipse Public License 1.0 (https://opensource.org/license/epl-1-0/) * 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. * You must not remove this notice, or any other, from this software. Docs: https://clojure.org Feedback: https://ask.clojure.org Getting Started: https://clojure.org/guides/getting_started To build and run locally with Ant: One-time setup: ./antsetup.sh To build: ant local To run: java -jar clojure.jar To build locally with Maven: To build (output JARs in target/): mvn package To build without testing: mvn package -Dmaven.test.skip=true To build and install in local Maven repository: mvn install To build a standalone jar with dependencies included: mvn -Plocal -Dmaven.test.skip=true package To run with the standalone jar: java -jar clojure.jar -------------------------------------------------------------------------- This program uses the ASM bytecode engineering library which is distributed with the following notice: ASM: a very small and fast Java bytecode manipulation framework Copyright (c) 2000-2011 INRIA, France Telecom All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ------------------------------------------------------------------------- This program uses the Guava Murmur3 hash implementation which is distributed under the Apache License: Apache License Version 2.0, January 2004 https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS
Clojure eXchange 2016
If you're looking for the best place to learn about Clojure, Functional Programming and network with like-minded people, then the Clojure eXchange 2016 is the conference you simply can't miss! Meet with the world's leading experts, learn how to use Clojure in your team and discuss war stories with your peers.
Location: CodeNode, London, UK
Link: https://skillsmatter.com/conferences/7430-clojure-exchange-2016
Dates: 1st-2nd December 2016
How is anyone supposed to know that PersistentQueue
exists?
How is anyone supposed to know what a clojure.lang.MapEntry
or a clojure.lang.ISeq
are? Note that parts of the documentation and some docstrings explicitely mention some of the collection interfaces but nowhere are they documented or even just listed.
This list: https://www.reddit.com/r/Clojure/comments/3q9jaw/clojure_releases_vs_clojure_book_publication_dates/
seems to mention a few more books than the site http://clojure.org/community/books
Please extend the "official list" with the missing one, and also having the publication dates would be really helpful.
Thank you.
It would be nice if there was a page (or possibly more than one) about print/println vs pr/prn vs pprint and how to extend each of them.
Hi,
A guide for atom.io + parinfer would be awesome.
I've used it to teach some classes where I work.
Unfortunately, I'm not using it daily (I use vim), but I've noticed that It simplifies what scares many newcomers to lisp.
For the repl piece we ended up using the lein repl with require reload.
Regards,
Geraldo
The Clojure Cheatsheet appears to refer to Clojure 1.6. It's missing transducers and update, from what I noticed.
Could we make a section for new-comers to programming; introducing them to programming through Clojure?
Please improve the links to learning materials from "other" sources too :)
Another one important besides the existing books could be a "Video Courses" section. Just a few of existing video courses (in no particular order):
Thank you.
Would be nice to have an overview and examples of all the threading macros
http://clojure.org/api/api page has only one column currently. There is a lot of white space to the right on a desktop screen. A few columns would look better.
Most devs will expect to see some example code when visiting the home-page of a programming language. Currently clojure.org has none.
Examples of language home-pages with tasteful code blocks:
I did go through the top-level pages on my phone and found few small style problems.
Tested on Chrome device mode and Chrome Android.
The additional scrollbar is only displayed on desktop browser.
This page didn't survive the transition intact - need to fix it up.
On the http://clojure.org/community/events page the date for Clojure eXchange shows as 2016-12-02 but the first day of the conference is actually 2016-12-01.
Seems like it would be nice for that attribution to be visible.
I suggest the new clojure.org be made in more than one language.
If there's interest, I can contribute a mulit-lingual CMS http://yajogo.com/en/
Thanks
Simon
I think it would be nice to have a small 'Clojure News & Updates' section on the front page, maybe towards the bottom. It would be a nice clean way for veteran users to stay up to date as well as a way for new users to see up front (literally) that keeping the Clojure community involved is a key priority. Some articles about releases, new tools, Clojure success stories, and so on, I think, would be a nice feature to have.
Anyone else?
Would be cool to see @jafingerhut 's page on equality and hashing turned into a guide. With his approval since he owns the copyright!!
https://github.com/jafingerhut/thalia/blob/master/doc/other-topics/equality.md
It seems that someone landing on the home page should be shown an example of Clojure code, even if it is only something as simple as '(println "Hello World"!)'
Giving the user a lot of text to read before seeing any code will increase the chance they will navigate away from the site.
If having front page code is not desirable then maybe just a side-bar (or side-bar link) to a page dedicated to basic code examples would help.
Clojure.org does have a Getting Started page but it is almost too minimal as well as too advanced. There is an example of launching the REPL (better off shown later?) and a math example. The Language sections on the getting started page talk about Comparators and Reader Conditionals, fairly advanced topics for the total newbie.
I'd suggest something like the following, possibly as examples in the REPL (e.g. with output):
(println "Hello world")
=> Hello World
(+ 1 1)
=> 2
(def my-array [1 2 3])
etc...
(defn add-two [x](+ x 2))
etc. etc.
If this is something the maintainers would like to see I can put something together with actual page of markdown, etc. to provide a starting point.
Tried to find the index.adoc page so I could make the change myself but that doesn't appear to be here.
The error from http://clojure.org/index
:
Additionally, Clojure’s maps, sets, and vectors are as first class in Clojure
are lists are in Lisp.
Should be
Additionally, Clojure’s maps, sets, and vectors are as first class in Clojure
as lists are in Lisp.
Would be cool to see this guide by @jafingerhut turned into a guide: https://github.com/jafingerhut/thalia/blob/master/doc/other-topics/comparators.md
Note: this should only be done with Andy's ok! That's his copyright.
A Google search for metadata takes me to http://clojure.org/Metadata, but it's new home is at /reference/metadata. It could be good to add redirects to the new page locations for the docs that existed before the new site.
Link: https://github.com/bbatsov/clojure-style-guide
I personally felt relieved when I found out it existed - I could check my code against the guide and learn from that - "minor" things (vs. functionality), but might help gain confidence nonetheless for beginners.
Go to http://clojure.org/news/2016/01/14/clojure-org-live and hit the 'news' link. You end up at clojure.org/news/news which displays the 2016-01-14 article.
Same applies to the guides link -- linking to guides/ but displaying a guide instead of a listing of guides.
The events listing page DOES provide a listing of events.
expected is in all three cases a LISTING of ENTITY instead of you selecting a random entity for me.
See the home page for Rust: https://www.rust-lang.org/
Try/clojure is a lovely project, but the casual browser of clojure.org won't know how to interpret "TryClojure provides a browser-based Clojure REPL" and may not click through.
To elaborate, if I follow the path "clojure.org" -> "clojure.org/getting_started" as a new user, the term REPL is as yet undefined for me. So I won't know that "a browser-based Clojure REPL" means "play with some Clojure code in your browser."
On the other hand, if there's an edit box with code in it and a "run me" button, then it's pretty clear what I'm looking at.
http://clojure.org/reference/reader
'/' has special meaning, it can be used once in the middle of a symbol to separate the namespace from the name, e.g. my-namespace/foo. '/' by itself names the division function.
namespace here links to http://clojure.org/reference/namespaces which starts with "Namespaces are mappings from simple (unqualified) symbols to Vars and/or Classes."
This is not a good idea because the namespace of a symbol or keyword is not coupled to a "Clojure namespace".
"Clojure namespaces" is just my idea how to solve the nomenclature clash. IMHO it (or a better alternative) should be applied consistently in the reference. It is based on the assumption that no one will stop calling Clojure namespaces "namespaces" in favor of a totally different name and the other assumption that somebody new to the language would get it wrong at least.
The name "Clojure namespace" seems "correct" since "Clojure namespaces" serve the specific purpose of organizing code in a Clojure program while namespaces of symbols or keywords are general purpose namespaces in the literal sense of the word namespace. Think of "Clojure namespace" as the word namespace with the namespace "Clojure" :)
The paragraph about keywords mentions the ::
reader syntax and again suggests tight coupling to Clojure namespaces while it doesn't mention that keywords can have any namespace which only adds to the at least incomplete impression.
:window/rect
syntax should be explained before the ::
convencienceWhen looking at the clojure cheatsheet, I find the link colors hard to read, because the contrast is too low for me, on my monitor.
Doing some element inspection in my browser, the link color is defined as #4C82DF
on a background of rgba(235, 241, 245, 0.66)
, which converts to #EBF1F5
. If you throw those values into a color contrast checker, it says that it isn't enough contrast for the W3C's Accessibility Guidelines.
I think something like #304890
is much easier to read, while still being a somewhat similar blue. It also passes the W3C guidelines, even the AAA ones.
The page on the reader has a section on Reader Conditionals and is written from the perspective of someone using the reader (as it should be). However it doesn't offer a lot of concrete advice or examples for how people can use Reader Conditionals in their code. Would you be open to a new page on Reader Conditionals? It could also briefly discuss prior art (e.g. cljx) so people new to Clojure can understand how Reader Conditionals fit and why they were created.
I've written http://danielcompton.net/2015/06/10/clojure-reader-conditionals-by-example and would be happy to adapt parts or all of it for this doc page.
It could be good to expand docs on the socket REPL to:
There is some good information in the design doc that could be collated for this.
https://github.com/clojure/clojure-site/blob/master/content/about/jvm_hosted.adoc uses a Swing app as the big wall of example here. I don't think that's really the best choice here (also the image is currently missing as I never fixed that up). Would like to have one or two small but recognizable examples that shows value of tapping into the JDK or Java library.
This is the top link on Google for "clojure transducers".
If I search in the box on clojure.org I just get the same broken result.
It could be good to have a guide on using direct linking which:
^:dynamic
and ^:redef
There seems to be a slow but steady flow of people trying to use the Clojure logo in ways that aren't allowed by Rich (unintentionally). It could be good to have a page under Community which talks about the allowed usage of the Clojure logo and the word Clojure as well.
At the bottom of http://clojure.org/about/state there is a link to "Dynamic Devemopment".
It would be nice to add feed for this section, so the news could be propagated to Planet Clojure.
I'm not sure where clojure.org is hosted, but it's currently block from china
<<>> DiG 9.8.3-P1 <<>> clojure.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59644
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;clojure.org. IN A
;; ANSWER SECTION:
clojure.org. 3599 IN A 75.126.104.177
;; Query time: 133 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Nov 16 11:58:01 2015
;; MSG SIZE rcvd: 45
can I suggest if it's a static site, would it be better if just host on gh-pages?
What do you think about adding a page discussing core.async? I don't think I've seen any official documentation on usage. There is https://github.com/clojure/core.async/blob/master/examples/walkthrough.clj but I think some more documentation could be helpful.
It looks like the API docs may not have been built for clojure.core.server
? On the direct linking page, it links to the clojure.repl-api
namespace which doesn't seem quite right.
Additionally, there is a repl function provided that is slightly customized for use with the socket server in clojure.core.server/repl.
Might be considered a consumer of #32
But an attempt to include links to, or guides for, setting up code editors with various configurations which lend themselves well to Clojure development would be very handy.
www.clojure-toolbox.com is a good resource for finding Clojure libraries, especially as it makes an effort to track and prefer more active libraries over abandoned projects. May be worth mentioning.
It looks like www.clojure.org/robots.txt is 404'ing, and there used to be a sitemap for clojure.org which is also missing.
https://clojure.org/news/news says "25 November 2015"
https://clojure.org/news/2016/01/19/clojure18 correctly says "19 January 2016"
Searching for "namespace" the first google link points to clojure.org/Namespaces
which gives a 404. I suppose it should redirect to
http://clojure.org/reference/namespaces
Does the capital N
make a problem?
Probably on libs page, per discussion at https://groups.google.com/d/msg/clojure-dev/d5Hb1E7zfHE/ACYLp1FxCgAJ
ClojureBridge London 2016
We're offing this workshop to help make the Clojure community more accessible to a diverse range of participants. As such, this event is only welcoming participants who identify as female or nonbinary. Males may register as a guest of one of these participants.
This workshop is intended for those with none/some programming experience.
Link: http://www.clojurebridge.org/events/2016-02-19-london
Location: London, UK
Dates: 19th-20th February 2016
The current contributor list is maintained manually in text. As the first step towards automating the contributor list, I need to convert that text list into data (in particular an external csv file with fields for name and github id).
Asciidoc supports inclusion of tables built from an external csv data file.
There needs to be a better Getting Started page (probably actually more than one page) that covers:
http://clojure.org/api/api
In this page , we list these libraries:
Clojure Contrib Libraries
algo.generic
algo.graph
algo.monads
core.async
core.cache
core.contracts
core.incubator
core.logic
core.match
core.memoize
core.rrb-vector
core.typed
core.unify
data.avl
data.codec
data.csv
data.finger-tree
data.fressian
data.generators
data.json
data.priority-map
data.xml
data.zip
java.classpath
java.data
java.jdbc
java.jmx
math.combinatorics
math.numeric-tower
test.generative
tools.analyzer
tools.analyzer.js
tools.analyzer.jvm
tools.cli
tools.emitter.jvm
tools.logging
tools.macro
tools.namespace
tools.nrepl
tools.reader
tools.trace
But would you please add one line introduce to each library ? to help new user to easy know what the library does quickly.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.