(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| (comment ; Fun with transducers, v2 | |
| ;; Still haven't found a brief + approachable overview of Clojure 1.7's new | |
| ;; transducers in the particular way I would have preferred myself - so here goes: | |
| ;;;; Definitions | |
| ;; Looking at the `reduce` docstring, we can define a 'reducing-fn' as: | |
| (fn reducing-fn ([]) ([accumulation next-input])) -> new-accumulation | |
| ;; (The `[]` arity is actually optional; it's only used when calling | |
| ;; `reduce` w/o an init-accumulator). |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| /** | |
| * @jsx React.DOM | |
| */ | |
| var React = require('react/addons'); | |
| /* the link component is used to navigate away from th current url. Some of it is app spesific and | |
| therefore not included here. */ | |
| var Link = require('../components/Link.jsx'); | |
| var cx = React.addons.classSet; |
| (ns reagent-test.core | |
| (:require [reagent.core :as reagent :refer [atom]] | |
| [datascript :as d] | |
| [cljs-uuid-utils :as uuid])) | |
| (enable-console-print!) | |
| (defn bind | |
| ([conn q] | |
| (bind conn q (atom nil))) |
| ;;;; Super top secret talk stuff nobody should ever see. Shhh. | |
| (in-ns 'user) | |
| (defmacro bench [& body] | |
| `((re-find #"\"(.*)\"" (with-out-str (time (do ~@body)))) 1)) | |
| *ns* | |
| (require 'clojure.walk) |
| (ns react-cljs.core | |
| (:require React)) | |
| (declare render) | |
| (defn handle-change [e] | |
| (render {:text (.. e -target -value)})) | |
| (defn render [{:keys [text]}] | |
| (React/renderComponent |
| ;; see http://stackoverflow.com/questions/14724991/modelling-multiple-many-to-many-relationships-in-datomic | |
| (require '[datomic.api :as d]) | |
| (def uri "datomic:mem://test") | |
| (d/create-database uri) | |
| (def conn (d/connect uri)) | |
| (d/transact conn [ ;; User | |
| {:db/id #db/id [:db.part/db] | |
| :db/ident :user/username |
| ; Released under the Apache License, Version 2.0 | |
| ; http://www.apache.org/licenses/LICENSE-2.0.html | |
| (defmacro try-let | |
| "A combination of try and let such that exceptions thrown in the binding or | |
| body can be handled by catch clauses in the body, and all bindings are | |
| available to the catch and finally clauses. If an exception is thrown while | |
| evaluating a binding value, it and all subsequent binding values will be nil. | |
| Example: |