Error formatting macro: pagetree: java.lang.NullPointerException
Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current  |   View Page History

Clojure Libraries

There are many libraries for Clojure that complement what is in the Clojure core. Thanks to all contributors and other members of the community for sharing your efforts to extend and enhance Clojure!

Clojure Contrib

As a first stop, please consider the libraries in http://github.com/clojure/clojure-contrib/, a repository for libraries contributed to the Clojure project and candidates for inclusion in core.


Author: //*Chouser*//
All are licensed under the EPL.

Category: OS integration

  • clojure.contrib.command-line
    Parses command-line options according to your programs specifications.
    Provide --help output automatically.
  • clojure.contrib.shell-out
    Launch external programs and collect their output.
  • clojure.contrib.mmap
    Thin wrapper around Java's memory-map support. Provides versions of
    'slurp' and 'load-file' that use mmap internally.

Category: meta-clojure

3rd party dep: http://www.graphviz.org/

  • clojure.contrib.repl-utils
    Provides tools for examining Clojure source code and Java classes at
    the REPL.

Category: xml

  • clojure.contrib.lazy-xml
    XML parser/emitter using an in-memory format that's compatible with
    clojure.xml. The primary differences are that it produces lazy seqs
    of content nodes (instead of vectors), and that it can use a pull
    parser API internally. Works well with zip-filter.xml

Optional 3rd party dep: http://www.extreme.indiana.edu/xgws/xsoap/xpp/

  • clojure.contrib.zip-filter
  • clojure.contrib.zip-filter.xml
    Produces lazy sequences of nodes from an XML document that match the
    given chain of filter expressions. Similar in feel to XPath, but
    using Clojure syntax and easily extensible with custom filter
    expressions.

clojure.contrib.apply-macro http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: language extension
License: EPL
A sneaky way to apply a macro as if it were a function. Mostly for demonstration purposes.
clojure.contrib.auto-agent http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: language extension
License: EPL
Dependencies: clojure.contrib.test-is, clojure.contrib.walk
Cell-like agents that are automatically updated based on a formula.
clojure.contrib.condt http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: language extension
License: EPL
Dependencies: clojure-contrib.template
A "case" or "condp"-like macro that tests values using a template expression.
clojure.contrib.duck-streams http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: I/O
License: EPL
Utilities to create Java Readers and Writers out of any reasonable type, like File, URL, String, etc.
clojure.contrib.fcase http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: language extension
License: EPL
Several "case"-like macros using functional predicates.
clojure.contrib.json.read http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: JSON
License: EPL
Dependencies: clojure.contrib.test-is
Simple JSON parser in pure Clojure.
clojure.contrib.json.write http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: JSON
License: EPL
Dependencies: clojure.contrib.test-is
Simple JSON generator in pure Clojure.
clojure.contrib.prxml http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: XML
License: EPL
Dependencies: clojure.contrib.lazy-xml
Compact syntax for generating XML.
clojure.contrib.seq-utils http://github.com/clojure/clojure-contrib/
Stuart Sierra and others
Category: language utilities
License: EPL
Various utilities for working with sequences.
clojure.contrib.stacktrace http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: debugging
License: EPL
Friendlier, more Clojure-oriented stack traces.
clojure.contrib.str-utils http://github.com/clojure/clojure-contrib/
Stuart Sierra and others
Category: language utilities
License: EPL
Various utilities for working with strings and regular expressions.
clojure.contrib.template http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: language extension
License: EPL
Dependencies: clojure-contrib.walk
Macros to create and apply "template expressions" with "holes" that can be filled in later.
clojure.contrib.test-is http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: testing
License: EPL
Dependencies: clojure-contrib.template, clojure.contrib.stacktrace
Unit test framework, with generic "is" assertion macro. Supports storing tests as var metadata.
clojure.contrib.trace http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: debugging
License: EPL
Dependencies: clojure-contrib
Simple tracing macro to insert debugging messages into code.
clojure.contrib.walk http://github.com/clojure/clojure-contrib/
Stuart Sierra
Category: language extension
License: EPL
Generic tree walkers for any data structure, with modification and replacement. Makes it easy to implement things like macroexpand-all,
which is included as an example.


Author: //*Mark Engelberg*//
License: Public Domain
Dependencies: None
Category: Math

  • clojure.contrib.math
    Common math functions for Clojure's numeric tower.
  • clojure.contrib.combinatorics
    Efficient, functional implementations of common combinatorial
    functions such as permutations, combinations, and more.

clojure.contrib.monads http://github.com/clojure/clojure-contrib/
Author: Konrad Hinsen
Category: development
License: EPL

Macros for defining and using monads, commonly used monads and monad transformers

clojure.contrib.probabilities http://github.com/clojure/clojure-contrib/
Author: Konrad Hinsen
Category: maths
License: EPL

Probability distributions and random numbers

clojure.contrib.macro-utils
http://github.com/clojure/clojure-contrib/
Author: Konrad Hinsen
Category: development
License: EPL
Local macros (macrolet), local symbol macros (symbol-macrolet), and global symbol macros (defsymbolmacro)
clojure.contrib.types
http://github.com/clojure/clojure-contrib/
Author: Konrad Hinsen
Category: development
License: EPL
Utilities for defining data types, and in particular algebraic data types

clojure.contrib.accumulators
http://github.com/clojure/clojure-contrib/
Author: Konrad Hinsen
Category: development
License: EPL

A generic interface for accumulators and a handful of useful concrete accumulators (sum, product, counters, min-max, mean, variance, ...)


clojure.contrib.javadoc http://github.com/clojure/clojure-contrib/
Author: Christophe Grand
Categories: repl utilities
License: EPL
Dependencies: clojure.contrib

A repl helper to quickly open javadocs.

clojure.contrib.javadoc.browse http://github.com/clojure/clojure-contrib/
Author: Christophe Grand
Categories: repl utilities/desktop integration
License: EPL
Dependencies: clojure.contrib

Open urls in browser (or, when everything else fails, in a Swing browser)


clojure.contrib.server-socket.clj http://github.com/clojure/clojure-contrib/
Author: Craig McDaniel
Category: net
License: EPL

Description: An enhancement of Rich's original socket-server example that keeps track of client connections, closing them when the go away. It also includes a socket REPL as an example server socket.


pprint
http://github.com/clojure/clojure-contrib/
Author: Tom Faulhaber
Tags: pretty printing, formatted output, Common Lisp compatibility
License: EPL
Dependencies: none (outside of contrib)

  1. A flexible, customizable pretty printer for displaying clojure code and data (and potentially other structured data as well).
  2. A fully functional implementation of Common Lisp's crazy powerful format function. cl-format provides a way of producing formatted
    output in the "lisp style" in which the format string itself can perform destructuring on the input arguments rather than having
    complex iterations and conditionals in your code to do output.

3rd-party Clojure Libraries

A JSON encoder/decoder for clojure. Supports reading/writing from strings and files, pretty printing and custom encoders for java classes not handled by default. Complete with low memory usage characteristics and best of all... it's fast!



fnparse http://github.com/joshua-choi/fnparse
Author: Joshua Choi
Tags: parsing, rules
Licens: EPL
Dependencies: clojure-contrib

fnparse is a library for creating functional parsers in the Clojure programming language. It presents an easy, functional way to create parsers from
EBNF rules and was inspired by the paper Using Functional Parsing to Achieve Quality in Software Maintenance (http://citeseer.ist.psu.edu/148293.html)


Enlive http://github.com/cgrand/enlive/tree/master
Author: Christophe Grand
Categories: web
License: EPL
Dependencies: clojure.contrib, tagsoup

A selector-based (à la CSS) templating system for Clojure. A template = a plain unmodified unadorned html file + some templating rules (CSS like) in Clojure.


VimClojure http://kotka.de/projects/clojure/vimclojure.html
Author: Meikel Brandmeyer
Categories: editor, IDE
License: MIT

A Clojure filetype plugin for Vim. It provides sophisticated syntax highlighting, indenting and other settings to make
editing Clojure in Vim more comfortable. It provides command completion and is easily extensible for other libraries.


Gorilla http://kotka.de/projects/clojure/gorilla.html
Author: Meikel Brandmeyer
Categories: editor, IDE
License: MIT

Gorilla is a SLIME-inspired extension for Vim. It complements VimClojure with additional features like a Repl running in Vim,
sending of expressions to a running Clojure server, docstring lookup, macro expansion, completion of static class members,...
It depends on VimClojure.


CljTags http://bitbucket.org/kotarak/cljtags
Author: Meikel Brandmeyer
Categories: editor, IDE
License: MIT

A simple program to generate tags for use with Vim.


Monad http://bitbucket.org/kotarak/monad
Author: Meikel Brandmeyer
Categories: development
License: MIT

A monad library using multimethods to implement Haskell-style monads.


ClojureCheck http://kotka.de/projects/clojure/clojurecheck.html
Author: Meikel Brandmeyer
Categories: testing
License: MIT

An implementation of the Test Anything Protocol. TAP is widely used in the Perl community and greatly helps to separate the testing itself from the result reporting. ClojureCheck also contains a port of Haskell's QuickCheck. Depends on Monad.


Parser http://kotka.de/projects/clojure/parser.html
Author: Meikel Brandmeyer
Categories: parsing
License: MIT

An implementation of Haskell's Parsec for Clojure. It provides a library to create parser combinators in Clojure. Depends on Monad.


LazyMap http://kotka.de/projects/clojure/lazy-map.html
Author: Meikel Brandmeyer
Categories: development
License: MIT

LazyMap complements the lazy-cons and lazy-cat macros by providing similar macros for maps. It turns any map type of Clojure into a lazy map, whose values are not evaluated until accessed. The resulting map can be freely used, also with the seq library functions, without losing laziness.


ClojureQL http://www.gitorious.org/clojureql/
Author: Lau B. Jensen, Meikel Brandmeyer
Categories: db
License: EPL

ClojureQL let's you handle SQL statements as first class objects. They can be modified, combined to composite queries, bundled in batches... The specifics of the underlying DB enginge are hidden as much as possible.


clj-haml http://github.com/antoniogarrote/clj-haml/tree/master
Author: Antonio Garrote
Categories: web
License: LGPL (whatever)

A rough port of Haml HTML libraryfor clojure


Compojure http://github.com/weavejester/compojure
Author: James Reeves
Categories: web
License: EPL
Dependencies: clojure.contrib, a Java servlet container (e.g. Jetty)

Compojure is a web framework that emphasizes a thin I/O layer and a functional approach to web development. It includes an integrated
Jetty web server, but can be used with any Java servlet container.


Fact http://github.com/weavejester/fact
Author: James Reeves
Categories: testing
License: EPL
Dependencies: None

Fact is a unit testing library that combines ideas from Ruby's RSpec and Haskell's Quickcheck.


counterclockwise (aka ccw) http://code.google.com/p/counterclockwise/
Authors names: Laurent Petit, Stephan Mülhstrasser, Christophe Grand,Casey Marshall, Tuomas Karkkainen, Manuel Woelker
Category : IDE, editorLicense: EPL

counterclockwise is an integrated development environment (IDE) for the Clojure <http://clojure.sourceforge.net/> programming language, built on the Eclipse platform. Dependencies: Java 1.5, Eclipse 3.5, clojure, clojure-contrib, paredit.clj


Ring http://github.com/mmcgrana/ring
Author: Mark McGranaghan
Category: Web
License: MIT
A Clojure web application library inspired by Python's WSGI and Ruby's Rack; abstracts the details of HTTP into a simple, unified API and enables web application components that can be shared among different web servers and web frameworks.


clj-backtrace http://github.com/mmcgrana/clj-backtrace
Author: Mark McGranaghan
Category: Developer Tool
License: MIT
Enables more readable backtraces in Clojure programs.


clj-html http://github.com/mmcgrana/clj-html
Author: Mark McGranaghan
Category: Web
License: MIT

An HTML templating library using an expressive syntax based on Clojure data structures. Offers a compiled mode in which templates are pre-processed to optimize run-time performance and an interpreted mode to maximize run-time flexibility.


Lancet http://github.com/stuarthalloway/lancet
Author: Stuart Halloway
Developer tool
Same License as Clojure

Lancet is a build tool like Ant or Rake. Lancet makes it easy to create build targets: any Clojure function can be a build target. Lancet can call Ant tasks, or shell out and call other processes.


Programming Clojure http://github.com/stuarthalloway/programming-clojure
Author: Stuart Halloway
Educational
Same License as Clojure

Sample code for the book "Programming Clojure" (http://www.pragprog.com/titles/shcloj/programming-clojure)


neman.cells
Author: Krešimir Šojat http://bitbucket.org/ksojat/neman/
Category: dataflow
License: CPL 1.0

Cell are reference types that automaticly update there value whenever value of variable they depend on is changed. Cell value can depend on value of another cell, agent, atom, var, reference and any object that implement clojure.lang.IRef interface. Values can also be updated when property of normal Java object is changed if object provides some kind of notification system for property change (like swing or swt widgets).


neman.cli http://bitbucket.org/ksojat/neman/
Author: Krešimir Šojat
Category: command line arguments
License: CPL 1.0
Dependencies: apache commons-cli

Command line argument processing library using Apache commons-cli, supports automatic help generation, optional arguments and short and long argument names.


neman.core http://bitbucket.org/ksojat/neman/
Author: Krešimir Šojat
Category: object composition
License: CPL 1.0

Builder macro used for uniform way of constructing large object compositions like swing guis or XML DOM trees.


neman.css http://bitbucket.org/ksojat/neman/
Author: Krešimir Šojat
Category: CSS Web
License: CPL 1.0

Simple library for generation CSS files from Clojure with support for conversion of css3 properties to equivalent webkit and mozilla extensions.


neman.jetty http://bitbucket.org/ksojat/neman/
Author: Krešimir Šojat
Category: web server, jetty
License: CPL 1.0
Dependencies: jetty

Helpers for constructing Jetty configurations without using external Jetty XML files.


neman.json http://bitbucket.org/ksojat/neman/
Author: Krešimir Šojat
Category: JSON
License: CPL 1.0
Dependencies: jackson

Fast JSON encoder/decoder using Jackson JSON Processor.


neman.web http://bitbucket.org/ksojat/neman/
Author: Krešimir Šojat
Category: web
License: CPL 1.0
Dependencies: Jetty, truba

Simple Web framework based on Jetty web server.


neman.xml http://bitbucket.org/ksojat/neman/
Author: Krešimir Šojat
Category: xml, html, template engine
License: CPL 1.0
Dependencies: JDOM

Template engine for xml/html files with template inheritence.


truba http://bitbucket.org/ksojat/truba/
Author: Krešimir Šojat
Category: meta-clojure
License: CPL 1.0
Dependencies: Ant

Simple build that will download clojure (and jsr166y), clojure-contrib and clj-backtrace projects, compile them and install in your local Apache Ivy repository.


Dejcartes http://www.markmfredrickson.com/code
Author: Mark Fredrickson
Category: reporting, UI
License: LGPL
Depends: JFreeChart (included with source)

A wrapper around JFreeChart (http://jfree.org), a Java graphing/charting libraries. Allows use of native Clojure collections in charts (e.g. pie charts, scatter plots, histograms, etc).


Clojure+Processing http://github.com/rosado/clj-processing/tree/master
Author: Roland Sadowski (fyuryu on IRC).
Category: visualization, graphics, wrapper
License: Common Public License Version 1.0
Dependencies: a recent version of Processing (processing.org)
A wrapper for the Processing (processing.org) visualization library.


Cloak http://github.com/rosado/cloak/tree
Author: Roland Sadowski (fyuryu on IRC).
Category: automation tool, build tool
License: Common Public License Version 1.0
Dependencies: collection of my utility functions from libs4clj (http://github.com/rosado/libs4clj/tree/master), you can also use it with
Lancet (therefore use ant tasks etc)

Cloak is a simplistic automation tool written in Clojure. It's heavily inspired by ruby rake.


clj-record http://github.com/duelinmarkers/clj-record
Author: John Hume
Category: db
License: MIT
Dependencies: clojure-contrib

Inspired by Rails' ActiveRecord, a convenient persistence API with support for declarative validations, callbacks, and associations.


traceme http://github.com/kreg/traceme/tree
Author: Craig McDaniel
Category: REPL tool
Licence: EPL

Tracing of functions can be enabled/disabled through a simple toggle function.


saxon http://github.com/pjt/saxon/tree/master
Author: Perry Trolard
Category: XML, XPath, XQuery
License: MIT
Depends: Michael Kay's Saxon XSLT and XQuery Processor (http://
saxonica.com); included in distribution

saxon is a simple functional wrapper around Saxon's high-level APIs, taking stylesheets, XPaths, & XQuery expressions & returning Clojure functions which apply them to compiled XML documents. For XQuery & XPath, functions return lazy sequences of query results with "atomic types" (i.e. non-node results) converted to native Clojure (Java) datatypes.


re-rand http://github.com/weavejester/re-rand
Author: James Reeves
Categories: strings, testing
License: EPL
Dependencies: None

re-rand is a library for generating random strings from regular expressions. Useful for generating test data.


clj-android http://github.com/remvee/clj-android/
Author: Remco van 't Veer
Categories: android framework
License: MIT

Basic application framework for building Android applications using Clojure.


test-expect http://code.google.com/p/test-expect/
Author: Matt Clark
Tags: testing, mocking, expectations, stubbing
License: EPL
Dependencies: none (optional dependency on test-is)

Supports setting up and validating expectations on mocked dependency functions. Informative failure output for easy integration into any testing environment via functional override.


xg-model, xg-gf
http://code.google.com/p/explorersguild/wiki/XGModelAndGF
Author: mikel evins
Tags: generic functions, models, dispatch
License: EPL
Dependencies: none

Provides:

  • model: an implementation of extensible record types with optional value constraints on fields
  • gf:an implementation of CLOS_style generic functions. gf domains provide a means of defining dispatch algorithms. Example domains are provided that implement CLOS-style dispatch over Java classes, and simple predicate-dispatch. Included is a dispatch domain that implements multimethod dispatch on XG models.

clj-web-crawler
http://github.com/heyZeus/clj-web-crawler/tree/master
Author: Brian Doyle
Categories: Web, Automation
License: MIT
Dependencies: clojure, clojure-contrib, Apache commons-client 3.1

clj-web-crawler is a wrapper around the Apache commons-client Java library that allows you to easily crawl the web in a functional way.


Postal http://github.com/drewr/postal/tree/master
Author: Drew Raines
Category: Mail, protocols, networking
License: MIT

Postal is a library for constructing and sending RFC822-compliant Internet email messages. It wraps the JavaMail package for message and SMTP support. It supports sendmail natively.


Incanter http://github.com/liebke/incanter/tree/master
Author: David Edgar Liebke
Tags: statistics, numerical computing, plotting
License: EPL
Dependencies: Parallel Colt, JFreeChart, OpenCSV

Incanter is a collection statistical computing and plotting libraries with R-like semantics.


sdb http://github.com/clojure/sdb/tree/master
Author: Rich Hickey
Category: development, database
License: EPL

A Clojure library for working with Amazon SimpleDB


com.konato.ode
http://www.konato.com/2009/07/08/com-konato-ode/
Author: Stephane Rousseau
Categories: Scientific computing, Simulation, ODE
License: EPL

Dependencies: clojure.contrib.test-is for unit testing

Description: This is an ordinary differentials equations solvers and simulation library in Clojure. It does implements several fixed steps solvers: Euler, an Euler modified version, Runge-Kutta order 4 and a Runge-Kutta using parameters to implement RK4, Runge-Kutta-Fehlberg. It does implement a variable step ODE solver based on the popular rfk45 method. Others RK fixed or variable methods can be easily implemented using the RKP method. Functions are provided to convert State Space and Transfer functions to ODE who can be used by the system.


Conjure http://github.com/macourtney/Conjure
Author: Matt Courtney
Category: web
License: Apache 2.0

Description: Conjure is a Rails like framework for the Clojure programming language. The goal of Conjure is to simplify the development of database backed web applications.


cssgen http://github.com/paraseba/cssgen
Author: Sebastián Galkin
Category: web
License: EPL
Dependencies: Clojure Contrib

An embedded DSL to generate CSS code from clojure. You can define constants, nested rules and reusable mixins, using the full clojure power. Also permits arithmetic operations on dimensions and colors. CSS without the pain.

Labels: