Clojure

https://clojure.org/

Clojure is a dynamic, general-purpose programming language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language, yet remains completely dynamic – every feature supported by Clojure is supported at runtime.

Clojure - Development

https://clojure.org/dev/dev

Clojure was created by Rich Hickey and is developed by a core team of developers at Cognitect, which supports this work.The Clojure development team values a measured and thoughtful approach to language evolution with a strong emphasis on maintaining backward compatibility.

Clojure - Learn Clojure - Flow Control

https://clojure.org/guides/learn/flow

In Clojure, however, everything is an expression! Everything returns a value, and a block of multiple expressions returns the last value. Expressions that exclusively perform side-effects return nil.

Clojure - Equality

https://clojure.org/guides/equality

Clojure’s = is true when comparing immutable values that represent the same value, or when comparing mutable objects that are the identical object. As a convenience, = also returns true when used to compare Java collections against each other, or against Clojure’s immutable collections, if their contents are equal. However, there are important caveats if you use non-Clojure collections.

Clojure - Data Structures

https://clojure.org/reference/data_structures

Clojure provides a set of alternative math operators suffixed with an apostrophe: +', -', *', inc', and dec'. These operators auto-promote to BigInt upon overflow, but are less efficient than the regular math operators. Ratio. Represents a ratio between integers. Division of integers that can’t be reduced to an integer yields a ratio, i.e. 22 ...

GitHub - Tko1/ClojureRS: Clojure, implemented atop Rust

https://github.com/Tko1/ClojureRS

Put simply, Clojure implemented atop Rust! My main goals here are. Project Goals: To create a version of Clojure that gets to exist independent of a particular platform; To explore a Clojure that, being more independent, has a. Proper tail call elimination b. Conditions / Restarts c. Any other feature it might not normally be able to indulge

Clojure - History

https://clojure.org/about/history

Clojure is not the product of traditional research and (as may be evident) writing a paper for this setting was a different and challenging exercise. I hope the paper provides some insight into why Clojure is the way it is and the process and people behind its creation and development.

Clojure - Go Block Best Practices

https://www.clojure.org/guides/core_async_go

However, other Clojure constructs, such as doseq do not allocate closures internally: ; This works just fine (go (doseq [c cs] (println (<! c))) Unfortunately, currently there isn’t a good way to know if a given macro will work as expected inside a go block unless one either looks at the source, or tests the code generated by the macro.

Clojure - Clojure Libraries

https://clojure.org/community/libraries

Additionally, Clojure can use any Java library via Java interop. Together, this provides a vast ecosystem of libraries at your disposal. Library search. Clojure Toolbox - categorized Clojure libs. Clojars - community repo for Clojure libs. Maven Central - searchable repo of Java and Clojure libs.

Clojure - Rationale

https://www.clojure.org/about/rationale

Clojure is an effort in pragmatic dynamic language design in this context. It endeavors to be a general-purpose language suitable in those areas where Java is suitable. It reflects the reality that, for the concurrent programming future, pervasive, unmoderated mutation simply has to go.

Community-Powered Clojure Documentation and Examples ...

https://clojuredocs.org/

Clojure is a concise, powerful, and performant general-purpose programming language that runs on the JVM, CLR, Node.js, and modern mobile and desktop web browsers. New to Clojure and not sure where to start? Here are a few good resources to get you off on the right foot: Rich Hickey's Greatest Hits (videos) Clojure for the Brave and True

clojure · GitHub Topics · GitHub

https://github.com/topics/clojure

Clojure is a functional, dynamic, general-purpose programming language. It provides built-in concurrency support via software transactional memory and asynchronous agents, and offers a rich set of immutable, persistent data structures. Clojure runs on JVM, JavaScript VMs, and Common Language Runtime.

Clojure - Programming at the REPL: Introduction

https://clojure.org/guides/repl/introduction

The Clojure REPL gives the programmer an interactive development experience. When developing new functionality, it enables her to build programs first by performing small tasks manually, as if she were the computer, then gradually make them more and more automated, until the desired functionality is fully programmed. When debugging, the REPL makes the execution of her programs feel tangible ...

Clojure - Contributing

https://clojure.org/community/contributing

Clojure was created by Rich Hickey and is developed by a core team of developers at Cognitect, which supports this work. The Clojure development team values a measured and thoughtful approach to language evolution with a strong emphasis on maintaining backward compatibility.

Clojure - Books

https://clojure.org/community/books

The Clojure Workshop by Joseph Fahey, Thomas Haratyk, Scott McCaughie, Yehonathan Sharvit, Konrad Szydlo Jan 29, 2020. Reactive Programming with Clojure by Konrad Szydlo, Leonardo Borges Jan 25, 2019. Elements of Clojure by Zachary Tellman Nov 30, 2018. Clojure Polymorphism by Paul Stadig Nov 15, 2019.

clojure.string namespace | ClojureDocs - Community-Powered ...

https://clojuredocs.org/clojure.string

clojure.string Clojure String utilities It is poor form to (:use clojure.string). Instead, use require with :as to specify a prefix, e.g. (ns your.namespace.here (:require [clojure.string :as str])) Design notes for clojure.string: 1. Strings are objects (as opposed to sequences). As such, the string being manipulated is the first argument to a ...

Clojure - Runtime Polymorphism

https://clojure.org/about/runtime_polymorphism

Clojure multimethods are a simple yet powerful mechanism for runtime polymorphism that is free of the trappings of OO, types and inheritance. The basic idea behind runtime polymorphism is that a single function designator dispatches to multiple independently-defined function definitions based upon some value of the call.

Clojure - Training

https://www.clojure.org/community/training

ClojureBridge aims to increase diversity within the Clojure community by offering free, beginner-friendly Clojure programming workshops for underrepresented groups in tech. ClojureBridge holds free training events for women and minorities. Typically these are 1 day events hosted by one or more sponsors.

Clojure - Learn Clojure - Functions

https://clojure.org/guides/learn/functions

Clojure is a functional language. Functions are first-class and can be passed-to or returned-from other functions. Most Clojure code consists primarily of pure functions (no side effects), so invoking with the same inputs yields the same output.

Clojure - Companies

https://clojure.org/community/companies

Below is a partial list of some companies using Clojure or ClojureScript. Most of this information comes from direct contacts, presentations, or other online resources. If you would like to be added or removed from this list, please contact clojure@cognitect.com or submit a pull request to the site repository.

Clojure - Higher Order Functions

https://www.clojure.org/guides/higher_order_functions

An anonymous function is a function without a name. In Clojure these can be defined in two ways, fn and the literal #(… ). Creating a function with defn immediately binds it to a name, fn just creates a function.

and - clojure.core | ClojureDocs - Community-Powered ...

https://clojuredocs.org/clojure.core/and

clojure.core Available since 1.0 (and) (and x) (and x & next) Evaluates exprs one at a time, from left to right. If a form returns logical false (nil or false), and returns that value and doesn't evaluate any of the other expressions, otherwise it returns the value of the last expr. (and) returns true.

Clojure - Contrib Libraries

https://clojure.org/community/contrib_libs

Clojure is an umbrella level project that hosts many additional libraries called Clojure contrib, which all exist under the Clojure organization on GitHub. These libraries use the same contribution model ( Contributor Agreement , license, and copyright) as Clojure itself, and a shared infrastructure maintained by the Clojure core team:

if - clojure.core | ClojureDocs - Community-Powered ...

https://clojuredocs.org/clojure.core/if

© Rich Hickey. All rights reserved. Eclipse Public License 1.0. Brought to you by Zachary Kim.. Tweet

GitHub - clojure-rs/ClojureRS: Clojure, implemented atop ...

https://github.com/clojure-rs/ClojureRS

Put simply, Clojure implemented atop Rust! For now, a Clojure interpreter implemented in Rust. The repl in action. Project Goals: To create a version of Clojure that gets to exist independent of a particular platform; To explore a Clojure that, being more independent, has a. Proper tail call elimination b. Conditions / Restarts c.

Clojure

Dynamically typed, functional dialect of Lisp. Immutable values, strong typing, hosted on JVM and other platforms.

  • Website
  • Quickstart
  • Community docs
  • Learn in y minutes
  • Q&a forum
  • Clojurians slack
  • Mailing list
  • Subreddit