Skip to content

Instantly share code, notes, and snippets.

@brandonbloom
Last active December 17, 2015 22:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brandonbloom/5681362 to your computer and use it in GitHub Desktop.
Save brandonbloom/5681362 to your computer and use it in GitHub Desktop.
(ns asdf
(:require [clojure.core.async :as async :refer [<! <!! >! >!! chan go]]))
(defn promise-chan [src-chan]
(let [c (chan 1)]
(go
(let [x (<! src-chan)]
(loop []
(>! c x)
(recur))))
c))
(defmacro go-promise [& body]
`(promise-chan (go ~@body)))
(let [p (go-promise 123)]
(assert (= (<!! p) (<!! p) (<!! p)))
(<!! p))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment