225 lines
24 KiB
HTML
225 lines
24 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
|
<head>
|
|
<meta charset="utf-8"/>
|
|
<title>Clojure Guides: Table of Contents</title>
|
|
|
|
|
|
<meta name="description" content="The content is a categorized and
|
|
manifold collection of documentation guides for the Clojure programming language and
|
|
its ecosystem.We recognize that different Clojure users have different level of expertise
|
|
and separates content into several groups:">
|
|
|
|
<meta property="og:description" content="The content is a categorized and
|
|
manifold collection of documentation guides for the Clojure programming language and
|
|
its ecosystem.We recognize that different Clojure users have different level of expertise
|
|
and separates content into several groups:">
|
|
|
|
<meta property="og:url" content="https://clojure-doc.github.io/articles/content/" />
|
|
<meta property="og:title" content="Table of Contents" />
|
|
<meta property="og:type" content="article" />
|
|
|
|
<link rel="canonical" href="https://clojure-doc.github.io/articles/content/">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<link href="https://fonts.googleapis.com/css?family=Alegreya:400italic,700italic,400,700" rel="stylesheet"
|
|
type="text/css">
|
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
|
|
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.7.0/styles/default.min.css">
|
|
<link href="../../css/screen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
|
|
|
|
<nav class="navbar navbar-default">
|
|
<div class="container">
|
|
<div class="navbar-header">
|
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
|
<span class="sr-only">Toggle navigation</span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
</button>
|
|
<a class="navbar-brand" href="../../index.html">Clojure Guides</a>
|
|
</div>
|
|
<div id="navbar" class="navbar-collapse collapse">
|
|
<ul class="nav navbar-nav navbar-right">
|
|
<li ><a href="../../index.html">Home</a></li>
|
|
<li><a href="https://github.com/clojure-doc/clojure-doc.github.io">Contribute</a></li>
|
|
</ul>
|
|
</div><!--/.nav-collapse -->
|
|
</div><!--/.container-fluid -->
|
|
</nav>
|
|
|
|
|
|
<div class="container">
|
|
|
|
|
|
<div class="row">
|
|
<div class="col-lg-9">
|
|
<div id="content">
|
|
|
|
<div id="custom-page">
|
|
<div id="page-header">
|
|
<h2>Table of Contents</h2>
|
|
</div>
|
|
|
|
<p><a href="https://github.com/clojure-doc/clojure-doc.github.io">The content</a> is a categorized and
|
|
manifold collection of documentation guides for the Clojure programming language and
|
|
its ecosystem.</p><p>We recognize that different Clojure users have different level of expertise
|
|
and separates content into several groups:</p><ul><li><a href="index.html#essentials">Essentials</a></li><li><a href="index.html#language-guides">Language Guides</a></li><li><a href="index.html#the-clojure-ecosystem">Ecosystem & Tools</a> (tools, libraries, community, books) guides</li><li><a href="index.html#tutorials-and-cookbooks">Tutorials & Cookbooks</a></li></ul><h2 id="essentials">Essentials</h2><p>Note that the editing environments are listed in alphabetical order and indicate no preference or endorsement. The last
|
|
<a href="https://clojure.org/news/2021/04/06/state-of-clojure-2021">"State of the Union" Clojure survey</a> indicated
|
|
that Emacs is still the most popular editing environment, followed by IntelliJ/Cursive, VS Code, Vim, and Atom.</p><h3 id="getting-started"><a href="../tutorials/getting_started/index.html">Getting Started</a></h3><p>If you're new to Clojure, this is a good place to start.</p><h3 id="introduction"><a href="../tutorials/introduction/index.html">Introduction</a></h3><p>A swift introduction to the Clojure language, covering most of the
|
|
basics.</p><h3 id="atom-for-clojure-development"><a href="https://atom.io/packages/chlorine">Atom for Clojure Development</a></h3><p>The Chlorine package for Clojure development in Atom (via a Socket REPL).</p><h3 id="intellij--cursive-for-clojure-development"><a href="https://cursive-ide.com/userguide/">IntelliJ / Cursive for Clojure Development</a></h3><p>The user guide for Cursive, the Clojure plugin for IntelliJ.</p><h3 id="eclipse-for-clojure-development"><a href="../tutorials/eclipse/index.html">Eclipse for Clojure Development</a></h3><p>A brief introduction to Counterclockwise, a Clojure plugin for Eclipse.</p><h3 id="emacs-for-clojure-development"><a href="../tutorials/emacs/index.html">Emacs for Clojure Development</a></h3><p>A brief introduction to Emacs, Clojure mode, CIDER and Clojure development workflow with Emacs.</p><h3 id="vim-for-clojure-development"><a href="../tutorials/vim_fireplace/index.html">Vim for Clojure Development</a></h3><p>A brief introduction to Clojure development in Vim with fireplace.vim.</p><h3 id="vs-code-for-clojure-development"><a href="https://calva.io/">VS Code for Clojure Development</a></h3><p>The Calva extension for Clojure development in VS Code (via nREPL).</p><p>See also <a href="https://marketplace.visualstudio.com/items?itemName=mauricioszabo.clover">Clover for VS Code</a>
|
|
for Clojure development in VS Code (via a Socket REPL).</p><h2 id="language-guides">Language Guides</h2><h3 id="functions"><a href="../language/functions/index.html">Functions</a></h3><p>Functions are at the heart of Clojure.</p><p>This guide covers:</p><ul><li>How to define functions</li><li>How to invoke functions</li><li>Multi-arity functions</li><li>Variadic functions</li><li>Higher order functions</li><li>Other topics related to functions</li></ul><h3 id="clojurecore-overview-incomplete"><a href="../language/core_overview/index.html">clojure.core Overview</a> (incomplete)</h3><p><code>clojure.core</code> is the core Clojure library.</p><p>This guide covers:</p><ul><li>Key functions of <code>clojure.core</code></li><li>Key macros of <code>clojure.core</code></li><li>Key vars of <code>clojure.core</code></li></ul><h3 id="interoperability-with-java"><a href="../language/interop/index.html">Interoperability with Java</a></h3><p>The Clojure language implementation is symbiotic with its host
|
|
platform (the JVM), providing direct interoperability.</p><p>This guide covers:</p><ul><li>How to instantiate Java classes</li><li>How to invoke Java methods</li><li>How to extend Java classes with proxy</li><li>How to implement Java interfaces with reify</li><li>How to generate Java classes with gen-class</li><li>Other topics related to interop</li></ul><h3 id="namespaces"><a href="../language/namespaces/index.html">Namespaces</a></h3><p>Namespaces organize Clojure functions.</p><p>This guide covers:</p><ul><li>An overview of Clojure namespaces</li><li>How to define a namespace</li><li>How to use functions in other namespaces</li><li><code>require</code>, <code>refer</code> and <code>use</code></li><li>How to Look up and invoke a function by name</li><li>Common compilation exceptions and their causes</li><li>How code compilation works in Clojure</li></ul><h3 id="polymorphism-protocols-and-multimethods"><a href="../language/polymorphism/index.html">Polymorphism: Protocols and Multimethods</a></h3><p>This guide covers:</p><ul><li>What are polymorphic functions</li><li>Type-based polymorphism with protocols</li><li>Ad-hoc polymorphism with multimethods</li><li>How to create your own data types that behave like core Clojure data types</li></ul><h3 id="collections-and-sequences"><a href="../language/collections_and_sequences/index.html">Collections and Sequences</a></h3><p>This guide covers:</p><ul><li>Collections in Clojure</li><li>Sequences in Clojure</li><li>Core collection types</li><li>Key operations on collections and sequences</li><li>Other topics related to collections and sequences</li></ul><h3 id="concurrency--parallelism"><a href="../language/concurrency_and_parallelism/index.html">Concurrency & Parallelism</a></h3><p>This guide covers:</p><ul><li>An overview of concurrency hazards</li><li>Clojure's approach to state and identity</li><li>Immutable data structures</li><li>Reference types (atoms, vars, agents, refs)</li><li>Using Clojure functions with <code>java.util.concurrent</code> abstractions</li><li>The Reducers framework (Clojure 1.5+)</li><li>Other topics related to concurrency and runtime parallelism</li></ul><h3 id="macros-and-metaprogramming"><a href="../language/macros/index.html">Macros and Metaprogramming</a></h3><p>This guide covers:</p><ul><li>Clojure macros</li><li>Clojure compilation process</li><li>Other topics related to metaprogramming</li></ul><h3 id="laziness-and-lazy-sequences-incomplete"><a href="../language/laziness/index.html">Laziness and Lazy Sequences</a> (incomplete)</h3><p>This guide covers:</p><ul><li>What are lazy sequences</li><li>How to create functions that produce lazy sequences</li><li>How to force evaluation</li><li>Pitfalls with lazy sequences</li></ul><h3 id="glossary"><a href="../language/glossary/index.html">Glossary</a></h3><p>This guide includes definitons of various Clojure-related terminology.</p><h2 id="the-clojure-ecosystem">The Clojure Ecosystem</h2><h3 id="books"><a href="../ecosystem/books/index.html">Books</a></h3><p>This guide covers:</p><ul><li>Books on Clojure</li><li>Books on ClojureScript</li></ul><h3 id="getting-started-with-leiningen"><a href="https://github.com/technomancy/leiningen/blob/master/doc/TUTORIAL.md">Getting Started with Leiningen</a></h3><p>This guide covers:</p><ul><li>What is Leiningen and what it can do for you</li><li>How to create a project with Leiningen</li><li>How to manage project dependencies</li><li>Accessing the REPL</li><li>How to run tests for your project</li><li>How to run the app</li><li>How to compile your code and dependencies into a single JAR for deployment ("überjar")</li><li>How to share (publish) a library</li></ul><h3 id="maven-for-clojure-development"><a href="../ecosystem/maven/index.html">Maven for Clojure Development</a></h3><p>This guide covers:</p><ul><li>An overview of Apache Maven</li><li>Maven Clojure plugin</li></ul><h3 id="clojure-library-directory"><a href="../ecosystem/libraries_directory/index.html">Clojure Library Directory</a></h3><p>A curated and highly opinionated categorized directory of available Clojure libraries and tools.</p><h3 id="clojure-community"><a href="../ecosystem/community/index.html">Clojure Community</a></h3><p>This guide covers:</p><ul><li>Planet Clojure, mailing lists, IRC channel</li><li>Clojure conferences</li><li>Local Clojure user groups</li><li>Other Clojure community resources</li></ul><h3 id="coretyped"><a href="../ecosystem/core_typed/home/index.html">core.typed</a></h3><ul><li>What is Clojure core.typed</li><li>core.typed documentation, tutorials, and guides.</li></ul><h3 id="javajdbc"><a href="../ecosystem/java_jdbc/home.html">java.jdbc</a></h3><p>This guide covers:</p><ul><li>An overview of Clojure's JDBC wrapper</li><li>Setting up a data source</li><li>Manipulating data with SQL</li><li>Manipulating tables with DDL</li><li>How to use connection pooling</li><li>How to use some common DSLs with java.jdbc</li><li>Where to go beyond java.jdbc</li></ul><h3 id="library-development-and-distribution"><a href="../ecosystem/libraries_authoring/index.html">Library Development and Distribution</a></h3><p>This guide covers:</p><ul><li>Basic setup for library development</li><li>How to publish a library to Clojars</li></ul><h3 id="leiningen-profiles"><a href="https://github.com/technomancy/leiningen/blob/master/doc/PROFILES.md">Leiningen Profiles</a></h3><p>This guide covers:</p><ul><li>What are Leiningen profiles</li><li>How to use them</li></ul><h3 id="distributing-libraries-with-leiningen"><a href="https://github.com/technomancy/leiningen/blob/master/doc/DEPLOY.md">Distributing Libraries with Leiningen</a></h3><p>This guide covers:</p><ul><li>How Clojure libraries are distributed</li><li>How to publish Clojure libraries to clojars.org</li><li>How to publish Clojure libraries to Maven Central</li><li>How to publish Clojure libraries to your own Maven repository</li></ul><h3 id="writing-leiningen-plugins"><a href="https://github.com/technomancy/leiningen/blob/master/doc/PLUGINS.md">Writing Leiningen Plugins</a></h3><p>This guide covers:</p><ul><li>What Leiningen plugins can do</li><li>How to install Leiningen plugins</li><li>How to develop plugins</li><li>How to distribute plugins</li></ul><h3 id="documentation-tools"><a href="../ecosystem/generating_documentation/index.html">Documentation Tools</a></h3><ul><li>Tools for generating documentation from docstrings and other project
|
|
metadata.</li></ul><h3 id="data-processing-overview-tbd"><a href="../ecosystem/data_processing/index.html">Data Processing (Overview)</a> (TBD)</h3><p>This guide covers:</p><ul><li>An overview of why Clojure is an excellent choice for data processing</li><li>Popular tools and libraries in the area</li></ul><h3 id="clojure-user-groups"><a href="../ecosystem/user_groups/index.html">Clojure User Groups</a></h3><p>This guide covers:</p><ul><li>Clojure User Groups (CLJUGs) around the world</li></ul><h2 id="tutorials-and-cookbooks">Tutorials and Cookbooks</h2><h3 id="basic-web-development"><a href="../tutorials/basic_web_development/index.html">Basic Web Development</a></h3><p>A brief tutorial/walkthrough of building a small web app using Ring,
|
|
Compojure, Hiccup, and H2.</p><h3 id="parsing-xml-in-clojure"><a href="../tutorials/parsing_xml_with_zippers/index.html">Parsing XML in Clojure</a></h3><p>This guide covers:</p><ul><li>How to parse XML in Clojure with zippers (<code>clojure.data.zip</code>)</li></ul><h3 id="growing-a-dsl-with-clojure"><a href="../tutorials/growing_a_dsl_with_clojure/index.html">Growing a DSL with Clojure</a></h3><p>How to create a simple DSL with Clojure.</p><p>Includes introductions to:</p><ul><li>Multimethods</li><li>Hierarchies</li><li>Metaprogramming and the "Code as data" philosophy</li></ul><h3 id="strings"><a href="../cookbooks/strings/index.html">Strings</a></h3><p>This cookbook covers:</p><ul><li>How to work with strings</li><li>How to work with characters</li><li>How to work with regular expressions</li><li>How to work with context-free grammars</li><li>How to format text</li></ul><h3 id="mathematics"><a href="../cookbooks/math/index.html">Mathematics</a></h3><p>Includes coverage of facilities for doing math with Clojure.</p><h3 id="data-structures-tbd"><a href="../cookbooks/data_structures/index.html">Data Structures</a> (TBD)</h3><p>This cookbook covers:</p><ul><li>Vectors</li><li>Maps</li><li>Lists</li><li>Sets</li><li>Generic operations on sequences</li></ul><h3 id="files-and-directories"><a href="../cookbooks/files_and_directories/index.html">Files and Directories</a></h3><p>This cookbook covers:</p><ul><li>Reading and writing text and binary files</li><li>Listing directory contents</li><li>Creating files and directories</li><li>Moving files and directories</li><li>Removing files and directories</li><li>Accessing file metadata</li><li>Other operations on files and directories</li></ul><h3 id="date-and-time-tbd"><a href="../cookbooks/date_and_time/index.html">Date and Time</a> (TBD)</h3><p>This guide covers:</p><ul><li>Working with JDK dates</li><li>Working with Joda Time and <code>clj-time</code></li><li>Instant literals (Clojure 1.4+)</li></ul><h3 id="middleware-incomplete"><a href="../cookbooks/middleware/index.html">Middleware</a> (incomplete)</h3><p>This guide covers:</p><ul><li>What middleware is and how it works</li><li>Creating middleware for a client function</li><li>Combining middleware to create a new client</li></ul><h2 id="license">License</h2><p>All the content is distributed under the
|
|
<a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a> license
|
|
and are copyright their respective primary author(s).</p><h2 id="tell-us-what-you-think">Tell Us What You Think!</h2><p>Please take a moment to tell us what you think about this guide on the <a href="https://clojurians.slack.com/archives/C02M6N5C137">Clojurians Slack <code>#clojure-doc</code> channel</a> or the <a href="https://groups.google.com/group/clojure">Clojure mailing list</a>.</p><p>Let us know what was unclear or what has not been covered. Maybe you do not like the guide style or grammar or discover spelling mistakes.
|
|
Reader feedback is key to making the documentation better.</p>
|
|
|
|
<div id="prev-next">
|
|
|
|
<a href="../about/index.html">« About</a>
|
|
|
|
|
|
||
|
|
|
|
|
|
<a href="../tutorials/getting_started/index.html">Getting Started with Clojure »</a>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-3">
|
|
<div id="sidebar">
|
|
<h3>Links</h3>
|
|
<ul id="links">
|
|
|
|
<li><a href="../about/index.html">About</a></li>
|
|
|
|
<li><a href="index.html">Table of Contents</a></li>
|
|
|
|
<li><a href="../tutorials/getting_started/index.html">Getting Started with Clojure</a></li>
|
|
|
|
<li><a href="../tutorials/introduction/index.html">Introduction to Clojure</a></li>
|
|
|
|
<li><a href="../tutorials/emacs/index.html">Clojure with Emacs</a></li>
|
|
|
|
<li><a href="../tutorials/vim_fireplace/index.html">Clojure with Vim and fireplace.vim</a></li>
|
|
|
|
<li><a href="../tutorials/eclipse/index.html">Starting with Eclipse and Counterclockwise For Clojure Development</a></li>
|
|
|
|
<li><a href="../tutorials/basic_web_development/index.html">Basic Web Development</a></li>
|
|
|
|
<li><a href="../tutorials/parsing_xml_with_zippers/index.html">Parsing XML in Clojure</a></li>
|
|
|
|
<li><a href="../tutorials/growing_a_dsl_with_clojure/index.html">Growing a DSL with Clojure</a></li>
|
|
|
|
<li><a href="../language/core_overview/index.html">Overview of clojure.core, the standard Clojure library</a></li>
|
|
|
|
<li><a href="../language/namespaces/index.html">Clojure Namespaces and Vars</a></li>
|
|
|
|
<li><a href="../language/collections_and_sequences/index.html">Collections and Sequences in Clojure</a></li>
|
|
|
|
<li><a href="../language/functions/index.html">Functions in Clojure</a></li>
|
|
|
|
<li><a href="../language/laziness/index.html">Laziness in Clojure</a></li>
|
|
|
|
<li><a href="../language/interop/index.html">Clojure interoperability with Java</a></li>
|
|
|
|
<li><a href="../language/macros/index.html">Clojure Macros and Metaprogramming</a></li>
|
|
|
|
<li><a href="../language/polymorphism/index.html">Polymorphism in Clojure: Protocols and Multimethods</a></li>
|
|
|
|
<li><a href="../language/concurrency_and_parallelism/index.html">Concurrency and Parallelism in Clojure</a></li>
|
|
|
|
<li><a href="../language/glossary/index.html">Clojure Terminology Guide</a></li>
|
|
|
|
<li><a href="../ecosystem/libraries_directory/index.html">A Directory of Clojure Libraries</a></li>
|
|
|
|
<li><a href="../ecosystem/libraries_authoring/index.html">Library Development and Distribution</a></li>
|
|
|
|
<li><a href="../ecosystem/generating_documentation/index.html">Generating Documentation</a></li>
|
|
|
|
<li><a href="../ecosystem/data_processing/index.html">Data Processing (Help Wanted)</a></li>
|
|
|
|
<li><a href="../ecosystem/web_development/index.html">Web Development (Overview)</a></li>
|
|
|
|
<li><a href="../ecosystem/maven/index.html">How to use Maven to build Clojure projects</a></li>
|
|
|
|
<li><a href="../ecosystem/community/index.html">Clojure Community</a></li>
|
|
|
|
<li><a href="../ecosystem/user_groups/index.html">Clojure User Groups</a></li>
|
|
|
|
<li><a href="../ecosystem/running_cljug/index.html">Running a Clojure User Group</a></li>
|
|
|
|
<li><a href="../ecosystem/books/index.html">Books about Clojure and ClojureScript</a></li>
|
|
|
|
<li><a href="../cookbooks/data_structures/index.html">Data Structures (Help wanted)</a></li>
|
|
|
|
<li><a href="../cookbooks/strings/index.html">Strings</a></li>
|
|
|
|
<li><a href="../cookbooks/math/index.html">Mathematics with Clojure</a></li>
|
|
|
|
<li><a href="../cookbooks/date_and_time/index.html">Date and Time (Help wanted)</a></li>
|
|
|
|
<li><a href="../cookbooks/files_and_directories/index.html">Working with Files and Directories in Clojure</a></li>
|
|
|
|
<li><a href="../cookbooks/middleware/index.html">Middleware in Clojure</a></li>
|
|
|
|
<li><a href="../ecosystem/java_jdbc/home.html">java.jdbc - Getting Started</a></li>
|
|
|
|
<li><a href="../ecosystem/java_jdbc/using_sql.html">java.jdbc - Manipulating data with SQL</a></li>
|
|
|
|
<li><a href="../ecosystem/java_jdbc/using_ddl.html">java.jdbc - Using DDL and Metadata</a></li>
|
|
|
|
<li><a href="../ecosystem/java_jdbc/reusing_connections.html">java.jdbc - How to reuse database connections</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/home/index.html">core.typed - User Documentation Home</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/user_documentation/index.html">core.typed - User Documentation</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/rationale/index.html">core.typed - Rationale</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/quick_guide.html">core.typed - Quick Guide</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/start/introduction_and_motivation/index.html">core.typed - Getting Started: Introduction and Motivation</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/types/index.html">core.typed - Types</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/start/annotations/index.html">core.typed - Annotations</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/poly_fn/index.html">core.typed - Polymorphic Functions</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/filters/index.html">core.typed - Filters</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/mm_protocol_datatypes/index.html">core.typed - Protocols</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/loops/index.html">core.typed - Looping constructs</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/function_types/index.html">core.typed - Functions</a></li>
|
|
|
|
<li><a href="../ecosystem/core_typed/limitations/index.html">core.typed - Limitations</a></li>
|
|
|
|
</ul>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<footer>Copyright © 2021 Multiple Authors
|
|
<p style="text-align: center;">Powered by <a href="http://cryogenweb.org">Cryogen</a></p></footer>
|
|
</div>
|
|
<script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
|
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
|
|
<script src="../../js/highlight.pack.js" type="application/javascript"></script>
|
|
<script>hljs.initHighlightingOnLoad();</script>
|
|
|
|
|
|
</body>
|
|
</html>
|