4robert/hooke__initjava/lang/Objectload()Vconst__0Lclojure/lang/Var;   clojure/lang/Var  getRawRoot()Ljava/lang/Object;  clojure/lang/IFnconst__1Lclojure/lang/AFn;  invoke&(Ljava/lang/Object;)Ljava/lang/Object;  clojure/lang/Symbolclojure/lang/Namespacefind/(Lclojure/lang/Symbol;)Lclojure/lang/Namespace;  !clojure/lang/AReference#const__3 % &clojure/lang/IPersistentMap( resetMeta<(Lclojure/lang/IPersistentMap;)Lclojure/lang/IPersistentMap; *+ $,)robert/hooke$loading__6721__auto____10752. 0 /1  3const__4 5 6equals(Ljava/lang/Object;)Z 89 :robert/hooke$fn__10754< =1java/util/concurrent/Callable?clojure/lang/LockingTransactionArunInTransaction3(Ljava/util/concurrent/Callable;)Ljava/lang/Object; CD BEconst__5 G H const__14 J KsetMeta (Lclojure/lang/IPersistentMap;)V MN Orobert/hooke$hooksQ R1bindRoot(Ljava/lang/Object;)V TU V const__15 X Y const__18 [ \robert/hooke$original^ _1 const__19 a b const__22 d erobert/hooke$compose_hooksg h1 const__23 j k const__26 m nrobert/hooke$join_hooksp q1 const__27 s t const__30 v wrobert/hooke$run_hooksy z1 const__31 | } const__34  robert/hooke$prepare_for_hooks 1robert/hooke$fn__10768 1 const__35   const__38  robert/hooke$start_scope 1 const__39   const__42  robert/hooke$scope_update_fn 1 const__43   const__46  %robert/hooke$possibly_record_in_scope 1 const__47   const__50  robert/hooke$end_scope 1 const__51   const__54  robert/hooke$with_scope 1setMacro   const__55   const__58  robert/hooke$add_hook 1 const__59   const__62  !robert/hooke$clear_hook_mechanism 1 const__63   const__66  robert/hooke$remove_hook 1 const__67   const__70  robert/hooke$clear_hooks 1 const__71   const__74  robert/hooke$prepend 1 const__75   const__78  robert/hooke$append 1 const__79   const__82   robert/hooke$with_hooks_disabled 1java/lang/Throwable__init0 clojure.corein-nsclojure/lang/RTvar8(Ljava/lang/String;Ljava/lang/String;)Lclojure/lang/Var;   robert.hookeintern;(Ljava/lang/String;Ljava/lang/String;)Lclojure/lang/Symbol;  clojure/lang/IObj doc keyword<(Ljava/lang/String;Ljava/lang/String;)Lclojure/lang/Keyword;  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.map2([Ljava/lang/Object;)Lclojure/lang/IPersistentMap;  withMeta2(Lclojure/lang/IPersistentMap;)Lclojure/lang/IObj;   clojure/lang/AFnhooksprivate java/lang/Boolean"TRUELjava/lang/Boolean; $% #&arglists(v*clojure/lang/Tuple,create4(Ljava/lang/Object;)Lclojure/lang/IPersistentVector; ./ -0java/util/Arrays2asList%([Ljava/lang/Object;)Ljava/util/List; 45 36clojure/lang/PersistentList80(Ljava/util/List;)Lclojure/lang/IPersistentList; .: 9;line=java/lang/Integer?valueOf(I)Ljava/lang/Integer; AB @CcolumnEfileGrobert/hooke.cljIoriginalK compose-hooksMf1Of2QF(Ljava/lang/Object;Ljava/lang/Object;)Lclojure/lang/IPersistentVector; .S -T join-hooksV run-hooksXargsZX(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lclojure/lang/IPersistentVector; .\ -]prepare-for-hooks_ start-scopea"()Lclojure/lang/IPersistentVector; .c -dscope-update-fnfscopesh target-varjpossibly-record-in-scopel end-scopen with-scopep&rbodytDefines a scope which records any change to hooks during the dynamic extent of its body, and restores hooks to their original state on exit of the scope.vadd-hookxfzkey|Add a hook function f to target-var. Hook functions are passed the target function and all their arguments and must apply the target to the args if they wish to continue execution.~clear-hook-mechanism remove-hook.Remove hook identified by key from target-var. clear-hooks!Remove all hooks from target-var.prependappendwith-hooks-disabled  robert.hooke__init classForName%(Ljava/lang/String;)Ljava/lang/Class;  java/lang/ClassgetClassLoader()Ljava/lang/ClassLoader;  clojure/lang/CompilerpushNSandLoader(Ljava/lang/ClassLoader;)V    popThreadBindings  Code StackMapTableLineNumberTable!(%5GJX[adjmsv|  L "$')-/Y247;=Y>@FWIYL)PYRYSWZY])PY_Y`WcYf)PYhYiWlYo)PYqYrWuYx)PYzY{W~Y)PYYWY4Y)PYYWY)PYYWY)PYYWY)PYYWY)PYYW Y)PYYWY)PYYɶWY)PYYҶWY)PYY۶WY)PYYW ޲Y)PYYW Y)PYYW )H))> #-05>S;;uT{D      Y SYS)Y SYS' 7 I Y!SY'SY)SYY+ 1S7SYDSYFSYDSYHSY JSLL Z Y!SY'SY)SYY+ 1S7SY"DSYFSYDSYHSY JS]N c Y!SY'SY)SYYP R US7SY%DSYFSYDSYHSY JSfW l Y!SY'SY)SYYL  US7SY*DSYFSYDSYHSY JSoY u Y!SY'SY)SYY L [ ^S7SY-DSYFSYDSYHSY JSx` ~ Y!SY'SY)SYY+ 1S7SY0DSYFSYDSYHSY JSb Y)SYYeS7SY=DSYFSYDSYHSYJSg  Y!SY'SY)SYYi k US7SYADSYFSYDSYHSY JSm  Y!SY'SY)SYYk 1S7SYGDSYFSYDSYHSY JSo Y)SYYeS7SYMDSYFSYDSYHSYJSq  Y)SYYs u US7SYTDSYFSYDSYHSY JSy  Y)SYYk { USYk } { ^S7SY]DSYFSYDSYHSY JS  Y!SY'SY)SYYk 1S7SYhDSYFSYDSYHSY JS  Y)SYYk } US7SYlDSYFSYDSYHSY JS  Y)SYYk 1S7SYtDSYFSYDSYHSY JS Y)SYYk s u ^S7SY{DSYFSYDSYHSYJS Y)SYYk s u ^S7SYDSYFSYDSYHSYJS Y)SYY{ s u ^S7SYDSYFSYDSYHSYJS >X