Advertisement
Guest User

Untitled

a guest
May 29th, 2015
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.54 KB | None | 0 0
  1. (defn chain-fn [f]
  2. (fn [[c x]]
  3. (if (= c ::continue)
  4. (if-let [result (f x)]
  5. [::continue result]
  6. [::short-circuit x])
  7. [::short-circuit x])))
  8.  
  9. (defn start-chain [value]
  10. [::continue value])
  11.  
  12. (defn stop-chain [[_ value]]
  13. value)
  14.  
  15. (defn rev [s]
  16. (println "calling rev")
  17. (apply str (reverse s)))
  18.  
  19. (defn dub [s]
  20. (println "calling dub")
  21. (str s s))
  22.  
  23. (defn break-it [s] nil)
  24.  
  25. (comment
  26. "Usage:"
  27. (-> "Meow"
  28. start-chain
  29. ((chain dub))
  30. ((chain break-it))
  31. ((chain rev))
  32. stop-chain)
  33.  
  34. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement