• Stars
    star
    403
  • Rank 107,140 (Top 3 %)
  • Language
    Clojure
  • License
    MIT License
  • Created about 10 years ago
  • Updated over 8 years ago

Reviews

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

Repository Details

Elm-style FRP for Clojure and ClojureScript

Zelkova

This project is unmaintained.

Clojars Project

Build Status

Elm-style FRP for Clojure and ClojureScript.

Here's a conference talk with some demos!

Here's a mailing list on Google Groups!

Bullet points

  • signal graphs are static, just like in Elm (why?)
  • core.async is used to wire up running graphs
  • you can run as many signal graphs as you want at the same time
  • graphs can share signal nodes because each signal is just a "recipe" value decoupled from the state of any running graph
  • works in both Clojure and ClojureScript, but ClojureScript is currently better supported with implementations for keyboard, mouse, and window signals (basically straight ports from the Elm libraries)
  • pairs really well with immediate-mode rendering (e.g. React-based systems like Om or Reagent)
  • transducer pipelines!!

What does it look like?

(ns my-app.ui
  (:require [jamesmacaulay.zelkova.signal :as z]
            [jamesmacaulay.zelkova.keyboard :as keyboard]
            [jamesmacaulay.zelkova.mouse :as mouse]))

(def saved-points-signal
  (let [shift-clicks (z/keep-when keyboard/shift mouse/clicks)]
    (->> mouse/position
         (z/sample-on shift-clicks)
         (z/reductions conj #{}))))

(def saved-points-atom
  (z/pipe-to-atom saved-points-signal))

Documentation

The docs.

Examples

License

Copyright © 2014-2015

Distributed under the MIT License.

More Repositories

1

elm-graphql

A GraphQL library for Elm
Elm
313
star
2

react-bacon

A little module for using React with Bacon.js
JavaScript
118
star
3

cljs-promises

A ClojureScript library for using JS promises with core.async
Clojure
90
star
4

elm-composition-trees

A story about composing trees of computation
Elm
41
star
5

http_spy

Watch HTTP requests as they happen
Elixir
18
star
6

shopify-clj

A Clojure library for interacting with the Shopify API
Clojure
14
star
7

poker-hands

A little library to score poker hands in Clojure
Clojure
12
star
8

elm-json-bidirectional

Helps you construct two-way JSON encoder-decoders in Elm.
Elm
10
star
9

graphqlbin

Mock GraphQL schema server
TypeScript
9
star
10

ruler

Elixir
8
star
11

kozu

Promise-agnostic functional composition in JavaScript.
JavaScript
7
star
12

sprockets_rails3_backport

Backport of Rails 3.1.x Sprockets integration to Rails 3.0.x
Ruby
6
star
13

backfire

backpack => campfire bridge
Ruby
6
star
14

redoc-autogen

Automatically build docs for ReasonML packages
Dockerfile
5
star
15

zelkova-todomvc

TodoMVC with Zelkova and Reagent, translated from evancz/elm-todomvc
Clojure
4
star
16

elm-gif-lab

A little sandbox for making animated GIFs with Elm
Elm
4
star
17

glitch-elm-example

The glitch.com example project ported to Elm!
Elm
3
star
18

zelkova-quil-flyer

A little demo using Zelkova and Quil
Clojure
3
star
19

zelkova-om-searcher

A little demo using Zelkova and Om
Clojure
3
star
20

rule-of-thirds

evaluates objects from peekaboom data for their adherence to the rule of thirds
Python
3
star
21

elm-protocol-records

A library of Elm type protocols, implemented as extensible records
Elm
3
star
22

office-party

iTunes web UI built with Rails & Shoes
Ruby
2
star
23

old-office-party

Awesome jukeboxing for shared spaces.
Ruby
2
star
24

elm-secd

An implementation of Peter Landin's SECD machine in Elm
Elm
2
star
25

batman_workshop

Ruby
1
star
26

mephisto_export

Plugin which adds a couple of rake tasks for managing exports of Mephisto data.
Ruby
1
star
27

bin

~/bin
Ruby
1
star
28

async-tools

Tools for core.async
Clojure
1
star
29

quantified

Small library for working with units of measurement
Ruby
1
star
30

rust-secd

An implementation of Peter Landin's SECD machine in Rust
Rust
1
star
31

gh-pull-notifier

CoffeeScript
1
star
32

comp4106

AI programming
Ruby
1
star
33

tagflow

Instagram hashtag slideshows
JavaScript
1
star
34

channel

An incomplete implementation of CSP channels in Elixir
Elixir
1
star