damn, that's true - just "old-fn# ~name" would work :)

On Jan 10, 4:42 pm, Tom Faulhaber <tomfaulha...@gmail.com> wrote:
> Yup, this version would cover most cases in a simpler way. My goal
> (for no particular reason except it entertained me) was to make
> something that worked as much like defn as possible. Most of the
> complexity is because of handling the possible combinations of arities
> that we might see as a result: I need to "fill in the holes" with
> proxies (though I could have wrapped with an if as well).
>
> extend-fn is also a much better name.
>
> I'm amused that you did the same thing I did before I realized it was
> silly: "old-fn# (var-get (var ~name))" can just be "old-fn# ~name".
> (It's like "use" and "utilize" one of my pet peeves in English.)
>
> Tom
>
> On Jan 10, 1:03 am, Amit Rathore <amitrath...@gmail.com> wrote:
>
>
>
> > Here's some (simpler?) code that will work for adding arity to
> > existing functions -http://gist.github.com/273401
>
> > It doesn't handle adding variable-arity (ie multiple arity using &) to
> > existing functions, but can add specific arity to existing varibale-
> > arity functions
> > It also doesn't handle adding more than one arity at a time, but you
> > can call it multiple times with different arity to get the same
> > effect. See example below -
>
> > An example to add arity -
>
> > user> (extend-fn keyword [ns name suffix]
> >         (keyword ns (str name "-" suffix)))
>
> > user> (extend-fn keyword [ns prefix name suffix]
> >         (keyword ns (str prefix "-" name "-" suffix)))
>
> > Here's the example usage -
>
> > user> (keyword nil "hello")
> > :hello
>
> > user> (keyword nil "hello" "more")
> > :hello-more
>
> > user> (keyword nil "oh" "hello" "more")
> > :oh-hello-more
>
> > Again, like Tom said, dunno why you'd need to do this...
>
> > On Jan 9, 10:45 pm, Tom Faulhaber <tomfaulha...@gmail.com> wrote:
>
> > > Actually this is possible. (seehttp://xkcd.com/386/)
>
> > > See the macro add-arity which I've put up 
> > > here:http://gist.github.com/273349
>
> > > This allows you to do things like:
>
> > > user> (add-arity keyword [ns name suffix] (keyword ns (str name "-"
> > > suffix)))
> > > #<user$eval__6304$fn__6309 user$eval__6304$fn__6...@5d8e63>
>
> > > user> (keyword nil "hello" "more")
> > > :hello-more
>
> > > The code I put up will handle (I think) all sorts of variations of arg
> > > counts: you can use add-arity just like defn and it will grab any
> > > specified arglists (including arglists with &) and proxy the others
> > > back to the original function. It doesn't do anything with metadata,
> > > though. Also, you can override a given arity on the original function,
> > > but you can't then call the original version at that arity.
>
> > > Whether this is a good idea or not is a completely different
> > > question :-)
>
> > > Tom
-- 
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