On Sun, Nov 2, 2008 at 6:34 PM, Mark McGranaghan <[EMAIL PROTECTED]> wrote: > > I really like being able to find and check documentation in the REPL > with find-doc and doc, but I often would like to see the source code > of a function or macro to be able to understand it better or learn > from the implementation.
Hi Mark, Just FYI, if you use Clojure through Emacs/Slime, you already have this functionality. The command "slime-edit-definition", or M-. (meta-key period), will open the source for whatever name is currently under your cursor. Best, Graham To do this I switch into an editor with > boot.clj, find and read the source, then switch back into the REPL. > Doing this a lot got me thinking, what if we could just do e.g. > > user=> (source filter) > (defn filter > "Returns a lazy seq of the items in coll for which > (pred item) returns true. pred must be free of side-effects." > [pred coll] > (when (seq coll) > (if (pred (first coll)) > (lazy-cons (first coll) (filter pred (rest coll))) > (recur pred (rest coll))))) > nil > user=> > > This might also be also be useful for programatically generating > documentation with handy "view source" links. > > I was think for the source macro something like: > (defmacro source > "Prints the source text of the top-level form in which var was > created." > [name] > `(if-let src-txt# (:source (meta (var ~name))) > (println src-txt#) > (println "no source found")))) > > For that to work we would need a :source meta value like we currently > have for :line and :file. > > My questions then are: > - Does the general idea of a source macro or something similar sound > useful? Am I missing something that renders such a feature > unnecessary? > - How might one implement the source macro and the associated support > in the reader/compiler? > > Thanks for your thoughts, > - 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 To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---