Got a Clojure library?

208 views
Skip to first unread message

Rich Hickey

unread,
Jan 29, 2009, 10:04:34 AM1/29/09
to Clojure
People regularly post here about Clojure libraries they are working
on, and it is great to see the explosion of new libs for Clojure!

I'd like to try to get a directory of Clojure libs together and up on
the Clojure site. Towards that end, I'd appreciate it, if you are the
author of a Clojure library (including contrib authors!), you reply in
this thread with:

The name of your library
Library home page URL
Your name
Category (db, web, UI, parsing etc)
License
A one-paragraph description. Include 3rd party dependencies if any.

(did I miss anything important?)

Thanks!

Rich

Dan Larkin

unread,
Jan 29, 2009, 10:53:02 AM1/29/09
to clo...@googlegroups.com
Name: clojure-json
URL: http://github.com/danlarkin/clojure-json/
Author: Dan Larkin
Tags: parsing, web, data-interchange
License: BSD
Dependencies: clojure-contrib (only for running tests)
Description:
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!

Tom Faulhaber

unread,
Jan 29, 2009, 12:08:59 PM1/29/09
to Clojure
Name: cl-format
URL: http://github.com/tomfaulhaber/cl-format
Author: Tom Faulhaber
Tags: formatted output, pretty printing, Common Lisp compatibility
License: EPL
Dependencies: unit-test (@ http://github.com/tomfaulhaber/unit-test)
for running the tests only
Description:
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 the input arguments rather than having
complex iterations and conditionals in your code to do output.

cl-format does not yet support the Common Lisp pretty printer, but
that's under development.

samppi

unread,
Jan 29, 2009, 12:24:30 PM1/29/09
to Clojure
Name: fnparse
URL: http://github.com/joshua-choi/fnparse
Author: Joshua Choi
Tags: parsing, rules
Licens: EPL
Dependencies: clojure-contrib
Description:
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).

Chouser

unread,
Jan 29, 2009, 12:45:30 PM1/29/09
to clo...@googlegroups.com
My name is Chouser, and these are my libs.
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 ==

* net.n01se.clojure-classes
Produces a graph of Clojure classes' inheritence:
http://tinyurl.com/clojure-classes

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

* net.n01se.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.

--Chouser

Meikel Brandmeyer

unread,
Jan 29, 2009, 1:10:49 PM1/29/09
to clo...@googlegroups.com
Hi,

Name: VimClojure
URL: http://kotka.de/projects/clojure/vimclojure.html
Author: Meikel Brandmeyer
Categories: editor, IDE
License: MIT
Description:
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.

Name: Gorilla
URL: http://kotka.de/projects/clojure/gorilla.html
Author: Meikel Brandmeyer
Categories: editor, IDE
License: MIT
Description:
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.

Name: CljTags
URL: http://bitbucket.org/kotarak/cljtags
Author: Meikel Brandmeyer
Categories: editor, IDE
License: MIT
Description:
A simple program to generate tags for use with Vim.

Name: Monad
URL: http://bitbucket.org/kotarak/monad
Author: Meikel Brandmeyer
Categories: development
License: MIT
Description:
A monad library using multimethods to implement Haskell-style
monads.

Name: ClojureCheck
URL: http://kotka.de/projects/clojure/clojurecheck.html
Author: Meikel Brandmeyer
Categories: testing
License: MIT
Description:
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.

Name: Parser
URL: http://kotka.de/projects/clojure/parser.html
Author: Meikel Brandmeyer
Categories: parsing
License: MIT
Description:
An implementation of Haskell's Parsec for Clojure. It provides
a library to create parser combinators in Clojure. Depnds on
Monad.

Name: LazyMap
URL: http://kotka.de/projects/clojure/lazy-map.html
Author: Meikel Brandmeyer
Categories: development
License: MIT
Description:
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 loosing lazyness.

Name: ClojureQL
URL: http://github.com/Lau-of-DK/clojureql/tree/master
Author: Lau B. Jensen, Meikel Brandmeyer
Categories: db
License: EPL
Description:
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.

Thanks for putting up such a list, Rich. It's awesome to see
the community grow. And this list will be a clear indicator!

Sincerly
Meikel

listasanto...@gmail.com

unread,
Jan 29, 2009, 1:07:01 PM1/29/09
to Clojure
clj-haml
http://github.com/antoniogarrote/clj-haml/tree/master
Antonio Garrote
web
LGPL (whatever)
A rough port of Haml for clojure

listasanto...@gmail.com

unread,
Jan 29, 2009, 1:16:37 PM1/29/09
to Clojure
Web
LGPL
A rough port of Haml HTML library to clojure

On 29 ene, 16:04, Rich Hickey <richhic...@gmail.com> wrote:

Konrad Hinsen

unread,
Jan 29, 2009, 3:57:11 PM1/29/09
to clo...@googlegroups.com
On 29.01.2009, at 16:04, Rich Hickey wrote:

> I'd like to try to get a directory of Clojure libs together and up on
> the Clojure site. Towards that end, I'd appreciate it, if you are the
> author of a Clojure library (including contrib authors!), you reply in
> this thread with:

...

Name: clojure.contrib.monads
URL: http://code.google.com/p/clojure-contrib/
Author: Konrad Hinsen
Category: development
License: EPL
Macros for defining and using monads, commonly used monads and monad
transformers


Name: clojure.contrib.probabilities
URL: http://code.google.com/p/clojure-contrib/
Author: Konrad Hinsen
Category: maths
License: EPL
Probability distributions and random numbers

James Reeves

unread,
Jan 29, 2009, 4:02:58 PM1/29/09
to Clojure
Name: Compojure
URL: http://github.com/weavejester/compojure
Author: James Reeves
Categories: web
License: EPL
Dependencies: clojure.contrib, a Java servlet container (e.g. Jetty)
Description:
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.

Name: Fact
URL: http://github.com/weavejester/fact
Author: James Reeves
Categories: testing
License: EPL
Dependencies: None
Description:
Fact is a unit testing library that combines ideas from Ruby's RSpec
and Haskell's Quickcheck.

- James

Laurent PETIT

unread,
Jan 29, 2009, 4:55:19 PM1/29/09
to clo...@googlegroups.com
Library Name: clojure-dev
URL: http://code.google.com/p/clojure-dev/
Authors names: Casey Marshall, Laurent Petit
Category : IDE, editor
License: EPL
Description: clojure-dev is an integrated development environment (IDE) for the Clojure programming language, built on the Eclipse platform. Features currently and editor with syntax highlighting, rainbow parens and (some) SLIME-like interactions with the REPL, a namespace browser with search capability. Intends to integrate as smoothly as possible with Eclipse Java development.
Dependencies: Java 1.5, Eclipse 3.4, clojure, clojure-contrib

Thanks,

--
Laurent

2009/1/29 Rich Hickey <richh...@gmail.com>

Mark Engelberg

unread,
Jan 29, 2009, 5:53:51 PM1/29/09
to clo...@googlegroups.com
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.

Mark McGranaghan

unread,
Jan 29, 2009, 6:37:40 PM1/29/09
to clo...@googlegroups.com
My name: Mark McGranaghan

Lib name: Ring
Home page: http://github.com/mmcgrana/ring
Category: Web
License: MIT
Description: 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.

Lib name: clj-backtrace
Home page: http://github.com/mmcgrana/clj-backtrace
Category: Developer Tool
License: MIT
Description: Enables more readable backtraces in Clojure programs.

Lib name: clj-html
Home page: http://github.com/mmcgrana/clj-html
Category: Web
License: MIT
Description: 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.

Christophe Grand

unread,
Jan 30, 2009, 2:46:32 AM1/30/09
to clo...@googlegroups.com
Name: clojure.contrib.javadoc
URL: http://code.google.com/p/clojure-contrib/
Author: Christophe Grand
Categories: repl utilities
License: EPL
Dependencies: clojure.contrib
Description:
A repl helper to quickly open javadocs.


Name: clojure.contrib.javadoc.browse

URL: http://code.google.com/p/clojure-contrib/
Author: Christophe Grand
Categories: repl utilities/desktop integration
License: EPL
Dependencies: clojure.contrib
Description:
Open urls in browser (or, whene ebrything else fail in a
crappy Swing browser)


Name: Enlive
URL: http://github.com/cgrand/enlive/tree/master
Author: Christophe Grand
Categories: web
License: EPL
Dependencies: clojure.contrib, tagsoup
Description:
A selector-based (à la CSS) templating system for Clojure.
A template = a plain unmodified unadorned html file + some templating rules (CSS like) in Clojure.


Rich Hickey a écrit :
--
Professional: http://cgrand.net/ (fr)
On Clojure: http://clj-me.blogspot.com/ (en)


Jan Rychter

unread,
Jan 30, 2009, 5:08:01 AM1/30/09
to clo...@googlegroups.com
Dan Larkin <d...@danlarkin.org> writes:
> Name: clojure-json
> URL: http://github.com/danlarkin/clojure-json/
> Author: Dan Larkin
> Tags: parsing, web, data-interchange
> License: BSD
> Dependencies: clojure-contrib (only for running tests)
> Description:
> 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!

Is this in any way related to JSON code in clojure-contrib? (I guess
not)

Is unification planned?

--J.

Stuart Halloway

unread,
Jan 30, 2009, 5:08:30 AM1/30/09
to clo...@googlegroups.com
Lancet
http://github.com/stuarthalloway/lancet
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
Stuart Halloway
Educational
Same License as Clojure
Sample code for the book "Programming Clojure" (http://www.pragprog.com/titles/shcloj/programming-clojure
)

All of my libraries (now and probably in the future) depend on clojure-
contrib. Does that even count as third-party?

Krešimir

unread,
Jan 30, 2009, 9:32:22 AM1/30/09
to Clojure

Author: Krešimir Šojat
URL: http://bitbucket.org/ksojat/neman/
Name: neman.cells
Category: dataflow
License: CPL 1.0
Description:
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).

Author: Krešimir Šojat
URL: http://bitbucket.org/ksojat/neman/
Name: neman.cli
Category: command line arguments
License: CPL 1.0
Dependencies: apache commons-cli
Description:
Command line argument processing library using Apache commons-cli,
supports automatic help generation, optional arguments and short and
long argument names.

Author: Krešimir Šojat
URL: http://bitbucket.org/ksojat/neman/
Name: neman.core
Category: object composition
License: CPL 1.0
Description:
Builder macro used for uniform way of constructing large object
compositions like swing guis or XML DOM trees.

Author: Krešimir Šojat
URL: http://bitbucket.org/ksojat/neman/
Name: neman.css
Category: CSS Web
License: CPL 1.0
Description:
Simple library for generation CSS files from Clojure with support for
conversion of css3 properties to equivalent webkit and mozilla
extensions.

Author: Krešimir Šojat
URL: http://bitbucket.org/ksojat/neman/
Name: neman.jetty
Category: web server, jetty
License: CPL 1.0
Dependencies: jetty
Description:
Helpers for constructing Jetty configurations without using external
Jetty XML files.

Author: Krešimir Šojat
URL: http://bitbucket.org/ksojat/neman/
Name: neman.json
Category: JSON
License: CPL 1.0
Dependencies: jackson
Description:
Fast JSON encoder/decoder using Jackson JSON Processor.

Author: Krešimir Šojat
URL: http://bitbucket.org/ksojat/neman/
Name: neman.web
Category: web
License: CPL 1.0
Dependencies: Jetty, truba
Description:
Simple Web framework based on Jetty web server.

Author: Krešimir Šojat
URL: http://bitbucket.org/ksojat/neman/
Name: neman.xml
Category: xml, html, template engine
License: CPL 1.0
Dependencies: JDOM
Description:
Template engine for xml/html files with template inheritence.

Author: Krešimir Šojat
URL: http://bitbucket.org/ksojat/truba/
Name: truba
Category: meta-clojure
License: CPL 1.0
Dependencies: Ant
Description:
Simple build that will download clojure (and jsr166y), clojure-contrib
and clj-backtrace projects, compile them and install in your local
Apache Ivy repository.

Rich Hickey

unread,
Jan 30, 2009, 9:43:16 AM1/30/09
to Clojure
The new library page is here:

http://clojure.org/libraries

Keep 'em coming!

Rich

Stuart Sierra

unread,
Jan 30, 2009, 10:19:22 AM1/30/09
to Clojure
Here they are, all these are in contrib. There's also
clojure.contrib.enum, clojure.contrib.import-static, and
clojure.contrib.javalog, which I consider deprecated.
-Stuart Sierra

clojure.contrib.apply-macro
http://code.google.com/p/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://code.google.com/p/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://code.google.com/p/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://code.google.com/p/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://code.google.com/p/clojure-contrib/
Stuart Sierra
Category: language extension
License: EPL
Several "case"-like macros using functional predicates.

clojure.contrib.json.read
http://code.google.com/p/clojure-contrib/
Stuart Sierra
Category: JSON
License: EPL
Dependencies: clojure.contrib.test-is
Simple JSON parser in pure Clojure.

clojure.contrib.json.write
http://code.google.com/p/clojure-contrib/
Stuart Sierra
Category: JSON
License: EPL
Dependencies: clojure.contrib.test-is
Simple JSON generator in pure Clojure.

clojure.contrib.prxml
http://code.google.com/p/clojure-contrib/
Stuart Sierra
Category: XML
License: EPL
Dependencies: clojure.contrib.lazy-xml
Compact syntax for generating XML.

clojure.contrib.seq-utils
http://code.google.com/p/clojure-contrib/
Stuart Sierra and others
Category: language utilities
License: EPL
Various utilities for working with sequences.

clojure.contrib.stacktrace
http://code.google.com/p/clojure-contrib/
Stuart Sierra
Category: debugging
License: EPL
Friendlier, more Clojure-oriented stack traces.

clojure.contrib.str-utils
http://code.google.com/p/clojure-contrib/
Stuart Sierra and others
Category: language utilities
License: EPL
Various utilities for working with strings and regular expressions.

clojure.contrib.template
http://code.google.com/p/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://code.google.com/p/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://code.google.com/p/clojure-contrib/
Stuart Sierra
Category: debugging
License: EPL
Dependencies: clojure-contrib
Simple tracing macro to insert debugging messages into code.

clojure.contrib.walk
http://code.google.com/p/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.

-Stuart Sierra

Mark Fredrickson

unread,
Jan 30, 2009, 7:31:13 PM1/30/09
to clo...@googlegroups.com
>
Name: Dejcartes
URL: http://www.markmfredrickson.com/code
Category: reporting, UI
License: LGPL
Depends: JFreeChart (included with source)
A wrapper around JFreeChart (jfree.org), a Java graphing/charting
libraries. Allows use of native Clojure collections in charts (e.g.
pie charts, scatter plots, histograms, etc).

- Mark Fredrickson
mark.m.fr...@gmail.com
http://www.markmfredrickson.com


fyuryu

unread,
Jan 31, 2009, 11:06:30 AM1/31/09
to Clojure
Name: Roland Sadowski (fyuryu on IRC).

Library name: Clojure+Processing
Library home page URL: http://github.com/rosado/clj-processing/tree/master
Category: visualization, graphics, wrapper
License: Common Public License Version 1.0
Dependencies: a recent version of Processing (processing.org)
Description: A wrapper for the Processing (processig.org)
visualization library.

Library name: Cloak
Library home page URL: http://github.com/rosado/cloak/tree
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)
Description: Cloak is a simplistic automation tool written in Clojure.
It's heavily inspired by ruby rake.

- Roland

John D. Hume

unread,
Jan 31, 2009, 6:17:19 PM1/31/09
to clo...@googlegroups.com
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.

Craig McDaniel

unread,
Feb 2, 2009, 12:42:15 AM2/2/09
to Clojure
Name: clojure.contrib.server-socket.clj
URL: http://code.google.com/p/clojure-contrib/
Author: Craig McDaniel
Category: net
License: ECL
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.

Name: traceme
URL: http://github.com/kreg/traceme/tree
Author: Craig McDaniel
Category: REPL tool
Licence: ECL
Description: Tracing of functions can be enabled/disabled through a
simple toggle function.

Perry Trolard

unread,
Feb 3, 2009, 3:56:36 PM2/3/09
to Clojure
Name: saxon
Author: Perry Trolard
URL: http://github.com/pjt/saxon/tree/master
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.

Perry

James Reeves

unread,
Feb 7, 2009, 6:23:37 PM2/7/09
to Clojure
Name: Rend
URL: http://github.com/weavejester/rend
Author: James Reeves
Categories: strings, testing
License: EPL
Dependencies: None
Description:
Rend is a library for generating random strings from regular
expressions. Useful for generating test data.

James Reeves

unread,
Feb 10, 2009, 2:26:14 PM2/10/09
to Clojure
Since my Rend library made it a bit too late to catch the first
iteration of the Clojure library page, I'll take the opportunity to
change the name to something a little less ambiguous. "Rend" sounded
too much like "render", so I've renamed it to "re-rand":

Name:        re-rand
URL:         http://github.com/weavejester/re-rand
Author:       James Reeves
Categories:   strings, testing
License:      EPL
Dependencies: None
Description:
re-rand is a library for generating random strings from regular
expressions. Useful for generating test data.

- James

Jeffrey Straszheim

unread,
Feb 11, 2009, 10:34:16 PM2/11/09
to Clojure
I'd love to add Clojure-Datalog. I'm still working on it, but it now
implements complete Datalog rules, including stratified negation and
boolean filters. It can now be used for basic tasks, although the
interface is rough.

Name: Clojure-Datalog
http://code.google.com/p/clojure-datalog/
Jeffrey Straszheim
Category: Logic Programming, Queries, Functional Relational (Logic)
Programming
Licence: EPL 1.0

Description:

Implements the Datalog protocol over in memory relations. Supports
negation, and user provided boolean filters.

On Jan 29, 10:04 am, Rich Hickey <richhic...@gmail.com> wrote:
> People regularly post here about Clojurelibrariesthey are working

Rich Hickey

unread,
Feb 12, 2009, 7:48:08 AM2/12/09
to Clojure


On Feb 11, 10:34 pm, Jeffrey Straszheim <straszheimjeff...@gmail.com>
wrote:
> I'd love to add Clojure-Datalog. I'm still working on it, but it now
> implements complete Datalog rules, including stratified negation and
> boolean filters. It can now be used for basic tasks, although the
> interface is rough.
>
> Name: Clojure-Dataloghttp://code.google.com/p/clojure-datalog/
> Jeffrey Straszheim
> Category: Logic Programming, Queries, Functional Relational (Logic)
> Programming
> Licence: EPL 1.0
>
> Description:
>
> Implements the Datalog protocol over in memory relations. Supports
> negation, and user provided boolean filters.
>

This looks great! Would you consider submitting a CA and adding this
to clojure-contrib?

Rich

Jeffrey Straszheim

unread,
Feb 12, 2009, 6:42:29 PM2/12/09
to clo...@googlegroups.com
Sure.  I'll send the document tomorrow.

Remco van 't Veer

unread,
Apr 8, 2009, 3:43:25 AM4/8/09
to clo...@googlegroups.com
Name: clj-android
URL: http://github.com/remvee/clj-android/
Author: Remco van 't Veer
Categories: android framework
License: MIT
Dependencies: clojure
Description:
Basic application framework for building Android applications using
Clojure.

Rich Hickey

unread,
Apr 8, 2009, 11:16:07 AM4/8/09
to clo...@googlegroups.com
Added - thanks!

Rich

Brian Doyle

unread,
Apr 10, 2009, 1:18:05 AM4/10/09
to clo...@googlegroups.com
Name: clj-web-crawler
URL: 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
Description:
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.

Tom Faulhaber

unread,
Apr 10, 2009, 2:07:15 PM4/10/09
to Clojure
Rich,

Since cl-format/pprint has now moved into contrib, we should remove
the existing cl-format entry and replace it with this:

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

Two parts:

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 the input arguments rather than having
complex iterations and conditionals in your code to do output.

Thanks!

Tom

Laurent PETIT

unread,
Apr 10, 2009, 6:14:45 PM4/10/09
to clo...@googlegroups.com
Hi,

Beware there's a repetition of the "this" word in the definition of cl-format :

2009/4/10 Tom Faulhaber <tomfau...@gmail.com>

Rich Hickey

unread,
Apr 10, 2009, 9:02:03 PM4/10/09
to Clojure
Done - thanks for this contribution!

Rich

Matt Clark

unread,
Apr 13, 2009, 9:50:52 AM4/13/09
to Clojure
Name: test-expect
URL: http://code.google.com/p/test-expect/
Author: Matt Clark
Tags: testing, mocking, expectations, stubbing
License: EPL
Dependencies: none (optional dependency on test-is)
Description: Supports setting up and validating expectations on mocked
dependency functions. Informative failure output for easy integration
into any testing environment via functional override.

mikel

unread,
Apr 13, 2009, 1:31:37 PM4/13/09
to Clojure
Name: xg-model, xg-gf
URL: http://code.google.com/p/explorersguild/source/clj/com/explorersguild
Instructions for checking out code are at:
http://code.google.com/p/explorersguild/source/checkout
Files: util.clj, gf.clj, model.clj, model_gf.clj
Author: mikel evins
Tags: generic functions, models, dispatch
License: EPL
Dependencies: none
Description: 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.

Rich Hickey

unread,
Apr 14, 2009, 7:43:50 AM4/14/09
to Clojure
Thanks! It looks like that first link is broken?

Rich

mikel

unread,
Apr 14, 2009, 1:21:44 PM4/14/09
to Clojure


On Apr 14, 6:43 am, Rich Hickey <richhic...@gmail.com> wrote:
> On Apr 13, 1:31 pm, mikel <mev...@mac.com> wrote:


> Thanks! It looks like that first link is broken?

Sorry about that; it was an svn link. I;ve added a Wiki page to the
project that explains what Model and GF are, and how to get and use
them. So how about this description instead:

Name: xg-model, xg-gf
URL: http://code.google.com/p/explorersguild/wiki/XGModelAndGF

Drew Raines

unread,
May 1, 2009, 11:47:30 AM5/1/09
to clo...@googlegroups.com
Rich Hickey wrote:

> People regularly post here about Clojure libraries they are working


> on, and it is great to see the explosion of new libs for Clojure!
>
> I'd like to try to get a directory of Clojure libs together and up
> on the Clojure site. Towards that end, I'd appreciate it, if you
> are the author of a Clojure library (including contrib authors!),
> you reply in this thread with:
>
> The name of your library
> Library home page URL
> Your name
> Category (db, web, UI, parsing etc)
> License
> A one-paragraph description. Include 3rd party dependencies if any.

Name: Postal
URL: http://github.com/drewr/postal/tree/master
Author: Drew Raines
Category: Mail, protocols, networking
License: MIT
Description: 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.

Since email is such a common need, this might make more sense as a
contrib component. It scratched an itch I had in a recent project,
so I went ahead and modularized it on its own, but I'd be happy to
merge this in as clojure.contrib.mail so we all have fewer jars to
wrangle.

-Drew

Mark Derricutt

unread,
May 2, 2009, 12:01:08 AM5/2/09
to clo...@googlegroups.com
Is there support in this lib currently for reusing an existing MailSession (or passing in say "java://comp/env/mail/Session" and having it handle the lookup?

Shouldn't be hard to add in if its not already there?

--
Discouragement is a dissatisfaction with the past, a distaste for the present, and a distrust of the future - Maree De Jong, Life Church New Zealand.
http://www.talios.com

Drew Raines

unread,
May 3, 2009, 7:01:32 PM5/3/09
to clo...@googlegroups.com
Mark Derricutt wrote:

> Is there support in this lib currently for reusing an existing
> MailSession (or passing in say "java://comp/env/mail/Session" and
> having it handle the lookup?
>
> Shouldn't be hard to add in if its not already there?

I've added the ability to supply an existing Session (created from a
JNDI context or otherwise) in the message meta.

http://github.com/drewr/postal/commit/ed5d83a4fdbf5e3e043f2080b38447c2113fcacc

-Drew

Mark Derricutt

unread,
May 3, 2009, 8:00:24 PM5/3/09
to clo...@googlegroups.com
Cheers! Look forward to giving this a good run through.


--
Discouragement is a dissatisfaction with the past, a distaste for the present, and a distrust of the future - Maree De Jong, Life Church New Zealand.
http://www.talios.com



David Nolen

unread,
May 4, 2009, 3:21:13 PM5/4/09
to clo...@googlegroups.com
Name: clj-cont
Author: David Nolen
Tags: continuations
License: MIT
Dependencies: clojure-contrib (error-kit)
Description:
Port of Common Lisp cl-cont library. Adds support for delimited continuations by transforming regular Clojure code into continuation passing style.

On Thu, Jan 29, 2009 at 11:04 AM, Rich Hickey <richh...@gmail.com> wrote:

People regularly post here about Clojure libraries they are working
on, and it is great to see the explosion of new libs for Clojure!

I'd like to try to get a directory of Clojure libs together and up on
the Clojure site. Towards that end, I'd appreciate it, if you are the
author of a Clojure library (including contrib authors!), you reply in
this thread with:

The name of your library
Library home page URL
Your name
Category (db, web, UI, parsing etc)
License
A one-paragraph description. Include 3rd party dependencies if any.

liebke

unread,
May 4, 2009, 8:11:06 PM5/4/09
to Clojure
Name: Incanter
URL: http://github.com/liebke/incanter/tree/master
Author: David Edgar Liebke
Tags: statistics, numerical computing, plotting
License: EPL
Dependencies: Parallel Colt, JFreeChart, OpenCSV
Description:
Incanter is a collection statistical computing and plotting
libraries with R-like semantics.

Konrad Hinsen

unread,
May 5, 2009, 9:10:53 AM5/5/09
to clo...@googlegroups.com
On Jan 29, 2009, at 16:04, Rich Hickey wrote:

> I'd like to try to get a directory of Clojure libs together and up on
> the Clojure site. Towards that end, I'd appreciate it, if you are the
> author of a Clojure library (including contrib authors!), you reply in
> this thread with:

...

Name: clojure.contrib.macro-utils
URL: http://code.google.com/p/clojure-contrib/
Author: Konrad Hinsen
Category: development
License: EPL
Local macros (macrolet), local symbol macros (symbol-macrolet), and
global symbol macros (defsymbolmacro)

Name: clojure.contrib.types
URL: http://code.google.com/p/clojure-contrib/
Author: Konrad Hinsen
Category: development
License: EPL
Utilities for defining data types, and in particular algebraic data
types

Name: clojure.contrib.accumulators
URL: http://code.google.com/p/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, ...)


Konrad Hinsen

unread,
May 7, 2009, 8:21:22 AM5/7/09
to clo...@googlegroups.com

It is also one of the most useful Clojure libraries that I found
until now. Thanks a lot! I can finally start to consider using
Clojure for work seriously.

Konrad.

Rich Hickey

unread,
May 12, 2009, 1:54:25 PM5/12/09
to Clojure


On May 5, 9:10 am, Konrad Hinsen <konrad.hin...@laposte.net> wrote:
> On Jan 29, 2009, at 16:04, Rich Hickey wrote:
>
> > I'd like to try to get a directory ofClojurelibs together and up on
> > theClojuresite. Towards that end, I'd appreciate it, if you are the
> > author of aClojurelibrary(including contrib authors!), you reply in
> > this thread with:
>

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

A Clojure library for working with Amazon SimpleDB

stephaner

unread,
Jul 9, 2009, 11:12:07 AM7/9/09
to Clojure
Name: com.konato.ode

URL: 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.

Meikel Brandmeyer

unread,
Jul 9, 2009, 12:34:02 PM7/9/09
to clo...@googlegroups.com
Name: Jazz
URL: http://kotka.de/projects/clojure/jazz.html
Author: Meikel Brandmeyer
Categories: GUI
License: MIT
Dependencies: c.c.def, c.c.except, c.c.swing-utils, JGoodies Forms
Description:
Jazz eases the creation of GUI forms by virtue of the JGoodies
Forms library. One specifies the desired components for the
form, Jazz takes care of creating suitable GUI components.
It is planned to provide a very high-level interface allowing for
different backends, (eg. SWT, miglayout, ...).

Sincerely
Meikel

Howard Lewis Ship

unread,
Jul 10, 2009, 3:42:50 PM7/10/09
to clo...@googlegroups.com
Library: Cascade
URL: http://wiki.github.com/hlship/cascade
Author: Howard M. Lewis Ship <hls...@gmail.com>
Category: web
License: ASL 2.0

A functional web application framework: 1/10th Tapestry
(http://tapestry.apache.org) goodness, 9/10ths Clojure awesomeness.
Adapts Tapestry's general approach to templating in a fully
functional, share-nothing action-based web framework.

Dependencies: clojure.contrib

Status: alpha (functionality incomplete)

On Thu, Jan 29, 2009 at 8:04 AM, Rich Hickey<richh...@gmail.com> wrote:
>
> People regularly post here about Clojure libraries they are working
> on, and it is great to see the explosion of new libs for Clojure!
>
> I'd like to try to get a directory of Clojure libs together and up on
> the Clojure site. Towards that end, I'd appreciate it, if you are the
> author of a Clojure library (including contrib authors!), you reply in
> this thread with:
>
> The name of your library
> Library home page URL
> Your name
> Category (db, web, UI, parsing etc)
> License
> A one-paragraph description. Include 3rd party dependencies if any.
>
> (did I miss anything important?)
>
> Thanks!
>
> Rich
>
> >
>



--
Howard M. Lewis Ship

Creator of Apache Tapestry
Director of Open Source Technology at Formos
Reply all
Reply to author
Forward
0 new messages