Partly in response to this issue and partly to get my feet wet with
Ring and friends, I spent the last few nights writing a proof-of-
concept Wiki to collect structured Clojure usage examples:

http://clojure-examples.appspot.com/

Here's a sample function page:

http://clojure-examples.appspot.com/clojure.core/contains%3F

I tried to come up with something that encourages a many-hands
approach while maintaining structure and quality. There are plenty of
missing features, but it should be easy for anyone interested to jump
in and write some examples. It uses a modified version of Markdown for
syntax. Content could be exported/parsed en masse relatively easily.

The source is on GitHub: http://github.com/jkk/clj-wiki

Does this seem like a worthwhile approach?

Justin

On Jun 29, 9:35 pm, Mike Meyer <mwm-keyword-googlegroups.
620...@mired.org> wrote:
> On Tue, 29 Jun 2010 17:01:10 -0700 (PDT)
>
>
>
>
>
> Mark Fredrickson <mark.m.fredrick...@gmail.com> wrote:
> > On Jun 29, 5:43 pm, nickikt <nick...@gmail.com> wrote:
> > > We could make it possible to add some metadata to a function
> > > like :example or something. Then add a function called (example
> > > <function name>) to print the example.
>
> > > Everybody could send patches. It would be a good way to learn and a
> > > good extra doku.
>
> > I was considering doing this for a while. This thread prompted me to
> > put it into action:
>
> >http://github.com/markmfredrickson/postdoc
>
> > Here is an example of it in action:
>
> >   (defn foo
> >     "Adds two numbers"
> >     [a b]
> >     (+ a b))
>
> >   (defn bar
> >     "Subtracts two numbers"
> >     [a b]
> >     (- a b))
>
> >   (postdoc #'foo
> >            {:references ["http://foo.com"; "http://bar.com";]
> >             :examples ['(foo 1 2) '(foo 3 4)]
> >             :see-also [#'bar]
> >             :categories [:bar :baz :other]})
>
> >  user> (doc foo)
> > -------------------------
> > user/foo
> > ([a b])
> >   Adds two numbers
> > === Categories ===
>
> > :bar, :baz, :other
>
> > === See Also ===
>
> > * #'user/bar
>
> > === Examples ===
>
> > > (foo 1 2)
> > 3
> > > (foo 3 4)
> > 7
>
> > === References ===
>
> > *http://foo.com
> > *http://bar.com
>
> > There is also a (run-examples foo) function that evaluates the
> > examples.
>
> It's a great start. However, examples are much more useful if you know
> what they should produce. run-examples might provide that, but having
> them in the metadata would be even better - along with an explanation.
>
> Doing that would allow the examples to be used as a set of unit tests
> as well. Nuts, the things you want to test - corner cases and edge
> conditions - are among the more useful things to document about a
> function.
>
>         <mike
> --
> Mike Meyer <m...@mired.org>          http://www.mired.org/consulting.html
> Independent Network/Unix/Perforce consultant, email for more information.
>
> O< ascii ribbon campaign - stop html mail -www.asciiribbon.org

-- 
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

Reply via email to