Skip to content

Instantly share code, notes, and snippets.

@Jared314 Jared314/async4.clj
Last active Dec 20, 2015

Embed
What would you like to do?
Clojure core.async example 4
(ns async4
(:require [clojure.core.async :as async]
[clojure.core.async.lab :as lab]))
(defn inmate [name c]
(async/go
(async/<! c)
(println name " released")))
(def alice (partial inmate "Alice"))
(def bob (partial inmate "Bob"))
(def carol (partial inmate "Carol"))
(def dave (partial inmate "Dave"))
(def eve (partial inmate "Eve"))
(defn judge-frank [& defendants]
(let [one-month (* 30 (* 24 (* 60 (* 60 1000)))) ; 1 month in msecs
sentence (fn [t] (lab/multiplex (async/timeout t)
(async/chan 1)))]
(for [d defendants
:let [t (* one-month (inc (rand-int 5)))]]
(d (sentence t)))))
(judge-frank
alice
bob
carol
dave
eve)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.