• Stars
    star
    106
  • Rank 325,871 (Top 7 %)
  • Language
    Clojure
  • License
    Eclipse Public Li...
  • Created about 7 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Take program design oddities in stride with Clojure/ClojureScript

promenade

Build Status cljdoc badge

Take program design oddities in stride with Clojure/ClojureScript.

Rationale

Non-trivial Clojure applications often need to deal with deeply nested conditions, complex error handling and potentially missing data. Naively applying Clojure's facilities to such problems may lead to brittle code that is hard to reason about. This library provides few basic mechanisms to decouple the tangled concerns.

Goals

  • Provide facilities to take apart code units and put back together in a cleaner way
  • Provide simple & effective API without the awkwardness of using monads in Clojure
  • Keep the surface area of this library's API small, fun and easy to work with

Non goals

  • Be faithful implementation of monads
  • Adapt all known monads (completeness)
  • Be limited to monadic ideas

Implemented features

  • Decouple condition checks from conditional action by representing success and failure (called Either)
  • Represent and deal with available and missing values (called Maybe)
  • Avoid imperativeness and coupling of throwing and catching of exceptions (called Trial)

Other work

You may find similarities to this library in the following work:

External references

Usage

Clojars Project

See Documentation

Discuss

Slack channel: #promenade (you need an invitation from http://clojurians.net/ to join the Clojurian Slack team)

Development

Running tests:

$ lein do clean, test       # run tests in lowest supported Clojure version
$ lein do clean, clj-test   # run tests in all supported versions of Clojure
$ lein do clean, cljs-test  # run tests in ClojureScript using NodeJS

License

Copyright © 2017-2021 Shantanu Kumar

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

More Repositories

1

lein-exec

Leiningen plugin for executing Clojure scripts
Clojure
299
star
2

lein-localrepo

Work with local Maven repository
Clojure
215
star
3

lein-sub

Leiningen plugin for executing tasks on sub-projects
Clojure
67
star
4

lein-clr

Leiningen plugin to automate build tasks for ClojureCLR projects
Clojure
58
star
5

clj-liquibase

Clojure wrapper for Liquibase for database change management and migration
Clojure
48
star
6

calfpath

À la carte Ring request matching, routing and reverse-routing for Clojure/Script
Clojure
33
star
7

lein-servlet

A Leiningen 2 plugin to work with servlet-based webapps
Clojure
31
star
8

dime

Dependency Injection Made Easy for Clojure
Clojure
30
star
9

stringer

Fast string operations for Clojure
Clojure
28
star
10

quiddity

S-Expression evaluation library for Clojure and ClojureScript
Clojure
17
star
11

ring-sse-middleware

Ring middleware to stream Server-sent Events
Clojure
17
star
12

clj-dbcp

Clojure wrapper for Apache DBCP to create JDBC connections pools
Clojure
16
star
13

keypin

Key lookup on steroids in Clojure
Clojure
14
star
14

citius

Comparative benchmarking using Criterium
Clojure
13
star
15

espejito

Latency breakup for single-threaded processing
Clojure
11
star
16

cljfreechart

Clojure wrapper for the JFreeChart library
Clojure
10
star
17

basil

A general purpose template library for Clojure and ClojureScript
Clojure
9
star
18

lein-idefiles

Generate IDE files for Leiningen projects
Clojure
9
star
19

lein-cascade

A Leiningen plugin to execute cascading task dependencies
Clojure
8
star
20

asphalt

A Clojure library for JDBC access.
Clojure
7
star
21

lein-viz

Visualize graph and tree data
Clojure
7
star
22

emacs24-config

Emacs 24 config for Clojure and web development using HTML/CSS/JavaScript
Emacs Lisp
6
star
23

cambium

PROJECT HAS MOVED - see https://cambium-clojure.github.io/
Clojure
5
star
24

ring-jdbc-session

JDBC based HTTP session store for Ring (Clojure)
Clojure
3
star
25

clj-jdbcutil

DEPRECATED - Clojure JDBC utility functions
Clojure
3
star
26

lein-docbkx

ABANDONED - Leiningen plugin for rendering Docbook documents (using Docbkx-tools)
Clojure
3
star
27

lein-javac-resources

Copy resources from :java-source-paths to compile path
Clojure
2
star
28

preflex

Resilience, instrumentation and metrics for Clojure
Clojure
2
star
29

hive-0.7.1-hbase-json

DEPRECATED - Hive 0.7.1 HBase Handler with JSON codec
Java
2
star
30

oss-jdbc

Aggregation of Open Source JDBC drivers on public Maven repos
2
star
31

clj-miscutil

Misclleneous utility functions and macros in Clojure
Clojure
2
star
32

coattail

Clojure/Script OpenAPI tooling to afford instant leverage
Clojure
1
star
33

vim7.3-config

Vim 7.3 config for Clojure and Ruby
Vim Script
1
star
34

lein-project-edn

Leiningen plugin to emit project details as EDN
Clojure
1
star
35

sqlrat

SQL template library for Clojure, ClojureScript and ClojureCLR
Clojure
1
star
36

fountain-jdbc

DEPRECATED - Clojure wrapper for SpringJDBC
Clojure
1
star
37

clip-test

A subset of `clojure.test` for Clojure and ClojureScript
Clojure
1
star
38

ringbelt

Utility tool belt for Ring web applications
Clojure
1
star
39

thingy

Data abstraction of 'things' in Clojure
Clojure
1
star
40

ide-files

DEPCRATED. Leiningen template to generate IDE files for existing projects. Superseded by the lein-idefiles plugin.
Clojure
1
star
41

cumulus

Obtain JDBC connection parameters for popular databases
Clojure
1
star