Guest User

Untitled

a guest
Jul 21st, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. (use ' clojure.contrib.reflect)
  2.  
  3. (defn- gf [obj field]
  4. [(keyword (.getName field)) (get-field (class obj) (.getName field) obj)])
  5.  
  6. (defn get-all-fields [obj]
  7. (into (sorted-map) (map (partial gf obj) (.getDeclaredFields (class obj)))))
  8.  
  9. ;; user=> (def a (memoize (partial (comp inc last concat) [2])))
  10. ;; #'user/a
  11. ;; user=> (a [4])
  12. ;; 5
  13. ;; user=> (a [3])
  14. ;; 4
  15. ;; user=> (pprint (-> a get-all-fields))
  16. ;; {:__meta {:line 5090},
  17. ;; :const__0 #<Var@4d8f9b75: #<core$if_let clojure.core$if_let@70b125bd>>,
  18. ;; :const__1 #<Var@19e09a4: #<core$let clojure.core$let@213eb2bc>>,
  19. ;; :const__2 #<Var@3b47788d: #<core$find clojure.core$find@1d429498>>,
  20. ;; :const__3 #<Var@6708f8e0: #<core$deref clojure.core$deref@48cc258a>>,
  21. ;; :const__4 #<Var@78871e65: #<core$val clojure.core$val@6e8af0b0>>,
  22. ;; :const__5 #<Var@fa7f9dc: #<core$apply clojure.core$apply@69ebcd0>>,
  23. ;; :const__6 #<Var@11dfc8a0: #<core$swap_BANG_ clojure.core$swap_BANG_@9bc850f>>,
  24. ;; :const__7 #<Var@1dfd868: #<core$assoc clojure.core$assoc@6a0239f6>>,
  25. ;; :f #<core$partial$fn__3678 clojure.core$partial$fn__3678@6629a046>,
  26. ;; :mem #<Atom@12b0f0ae: {([3]) 4, ([4]) 5}>}
  27. ;; nil
  28. ;; user=> (pprint (-> a get-all-fields :f get-all-fields))
  29. ;; {:__meta {:line 2009},
  30. ;; :arg1 [2],
  31. ;; :const__0 #<Var@fa7f9dc: #<core$apply clojure.core$apply@69ebcd0>>,
  32. ;; :f #<core$comp$fn__3644 clojure.core$comp$fn__3644@4cc68351>}
  33. ;; nil
  34. ;; user=> (pprint (-> a get-all-fields :f get-all-fields :f get-all-fields))
  35. ;; {:__meta {:line 1951},
  36. ;; :const__0 #<Var@fa7f9dc: #<core$apply clojure.core$apply@69ebcd0>>,
  37. ;; :f #<core$inc clojure.core$inc@b6be7ee>,
  38. ;; :g #<core$last clojure.core$last@26fc5b01>,
  39. ;; :h #<core$concat clojure.core$concat@372bab9>}
  40. ;; nil
  41. ;; user=>
Add Comment
Please, Sign In to add comment