> Basically because wrap-reload is a function, so app is evaluated > before it is passed to wrap-reload.
Right. To elaborate, the code "(reload/wrap-reload app '(ns1 ns2))" invokes the wrap-reload function with the current value of the "app" Var, which is a specific and immutable function. The reload middleware may subsequently reload the namespaces and therefore change the value of the app Var, but the value that is used to invoke (app req) within the middleware remains unchanged. I'd therefore suggest passing a Var instead of a function: (reload/wrap-reload (var app) '(ns1 ns2)) In this way, each time app is invoked within the middleware, it first goes to get the current value of the app var and then uses that value to evaluate the request argument; i.e. the reload works. Note that if the implementation of app itself never changes, only the functions that it in turn calls, then the (var app) bit becomes unnecessary. HTH, - Mark -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en