This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-01-13
Channels
- # admin-announcements (6)
- # beginners (51)
- # boot (164)
- # braid-chat (49)
- # cider (10)
- # clara (17)
- # cljs-dev (13)
- # cljsjs (51)
- # cljsrn (10)
- # clojars (42)
- # clojure (195)
- # clojure-bangladesh (102)
- # clojure-berlin (8)
- # clojure-canada (1)
- # clojure-chicago (19)
- # clojure-colombia (4)
- # clojure-denmark (6)
- # clojure-russia (15)
- # clojure-ukraine (7)
- # clojurescript (257)
- # code-reviews (10)
- # community-development (292)
- # core-async (13)
- # datomic (26)
- # dirac (4)
- # dunaj (5)
- # dysphemism (5)
- # events (21)
- # funcool (15)
- # hoplon (115)
- # instaparse (31)
- # ldnclj (15)
- # mori-fork (43)
- # mount (5)
- # off-topic (18)
- # om (195)
- # onyx (13)
- # proton (9)
- # re-frame (11)
- # reagent (44)
- # slack-help (14)
- # slackpocalypse (1)
- # spacemacs (10)
- # yada (23)
rfcr:
(defn with-retries
"Here flaky-fn is a function that tends to throw
many exceptions, yet works randomly when it doesn't.,"
[n flaky-fn]
(let [retries (atom n)
return (atom ::with-retries-failed)]
(while (< 0 @retries)
(try
(do
(reset! return (flaky-fn))
(reset! retries 0))
(catch Exception e
(do (println "failed on retry# " @retries)
(swap! retries dec) ))))
@return))
(defn flaky-fn []
(when (< 0.1 (rand)) (throw (Exception. "wat a flake.")))
"Meow! =^.^=")
(frequencies (repeatedly 1000 #(with-retries 20 flaky-fn)))
you don't need the do
block inside catch (most blocks in clojure are implicit do
blocks)
@escherize: also no need for atoms, can just use loop/recur with local state.