emacs.d/clones/lisp/clojure-doc.org/articles/content/index.html

226 lines
24 KiB
HTML
Raw Normal View History

2022-08-24 19:36:32 +02:00
<!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 &amp; Tools</a> (tools, libraries, community, books) guides</li><li><a href="index.html#tutorials-and-cookbooks">Tutorials &amp; 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 &amp; 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 avail
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">&laquo; About</a>
||
<a href="../tutorials/getting_started/index.html">Getting Started with Clojure &raquo;</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 &copy; 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>