Êþº¾4brobert/hooke$fn__10754clojure/lang/AFunction hooke.clj()V   invokeStatic()Ljava/lang/Object;const__0Lclojure/lang/Var; clojure/lang/Var getRawRoot  clojure/lang/IFnconst__1  const__2  invoke&(Ljava/lang/Object;)Ljava/lang/Object;  const__3 ! "const__4Lclojure/lang/AFn; $% &J(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ( ) + clojure.core.commute0clojure/lang/RT2var8(Ljava/lang/String;Ljava/lang/String;)Lclojure/lang/Var; 45 36deref8 *loaded-libs*:conj< robert.hooke>clojure/lang/Symbol@intern;(Ljava/lang/String;Ljava/lang/String;)Lclojure/lang/Symbol; BC ADclojure/lang/IObjFjava/lang/ObjectHdocJkeyword<(Ljava/lang/String;Ljava/lang/String;)Lclojure/lang/Keyword; LM 3NœHooke your functions! (defn examine [x] (println x)) (defn microscope "The keen powers of observation enabled by Robert Hooke allow for a closer look at any object!" [f x] (f (.toUpperCase (str x)))) (defn doubler [f & args] (apply f args) (apply f args)) (defn telescope [f x] (f (apply str (interpose " " x)))) (add-hook #'examine #'microscope) (add-hook #'examine #'doubler) (add-hook #'examine #'telescope) ;; Now when we examine something: (examine "something") > S O M E T H I N G > S O M E T H I N G Use the add-hook function to wrap a function in your a hook.Pmap2([Ljava/lang/Object;)Lclojure/lang/IPersistentMap; RS 3Tclojure/lang/IPersistentMapVwithMeta2(Lclojure/lang/IPersistentMap;)Lclojure/lang/IObj; XY GZclojure/lang/AFn\CodeLineNumberTable SourceFileSourceDebugExtension1   ! $%^*· ±_ ^Q)²¶À²¶À²¹ ²#¶²'¹*°_# ^¸,°_ -^ya/1¸7À³/9¸7À³/;¸7À³/=¸7À³#?¸EÀG½IYK¸OSYQS¸UÀW¹[À]³'±_`aSSMAP hooke.java Clojure *S Clojure *F + 1 hooke.clj robert/hooke.clj *L 1#1,29:1 *E