very cool implementation .. Something tells me that you didn't leave your
python background behind.. :)
Sunil.

On Sat, Dec 18, 2010 at 12:13 PM, Robert McIntyre <r...@mit.edu> wrote:

> I think your work is a wonderful idea.  I've been wanting to do this
> myself for some time.
> Thanks for actually doing it instead of just thinking about it.
>
> I have some humble thoughts/suggestions after reading your code; I'd
> love to hear what you think about these points:
>
> 1. I think that auto-currying itself should be a higher order
> function, which a macro then makes easier to use.
> 2. Your def-curry-fn doesn't allow for easy embedding of metadata like
> defn does; it could take advantage of defn from core for all that.
> 3. Your def-curry-fn is similar in spirit to defn-memo from
> clojure.contrib.def, but it's hard to combine it with that macro to
> get both effects (both curried and memoized) I feel like this is
> asking for a higher level of abstraction of "apply this unitary
> higher-order transform to the following definition" than making a
> defn-"higher-order-transform" macro for every transform those type of
> functions are called decorators in some other languages.
>
>
> I've sketched out a hopefully enhanced version of your code here:
> https://gist.github.com/746185
>
> While writing it, I found it convenient to extend the domain of
> partial to include a single argument.
> i.e. (= (partial f) f)
> I think it might be a good enhancement of the partial function, as it
> logically flows from the other airties.
> Do people think it would be a good patch for core?
>
> Please tell me what you think of my code :)  All criticisms are
> welcome; I too am still learning.
>
> Sincerely,
> --Robert McIntyre
>
>
> On Fri, Dec 17, 2010 at 9:00 PM, Sunil S Nandihalli
> <sunil.nandiha...@gmail.com> wrote:
> >
> >
> > On Sat, Dec 18, 2010 at 7:21 AM, Sunil S Nandihalli
> > <sunil.nandiha...@gmail.com> wrote:
> >>
> >> Hi Eric,
> >>  I do know about partial. But what I am saying is that the extra
> function,
> >> partial, is not necessary if the function was created with
> >> def-curry-fn....... The function automatically returns a curried version
> >> when called with fewer number of arguments than necessary.... like it
> >> happens in haskell..
> >> thanks,
> >> Sunil.
> >> On Sat, Dec 18, 2010 at 3:02 AM, Eric Schulte <schulte.e...@gmail.com>
> >> wrote:
> >>>
> >>> Hi Sunil,
> >>>
> >>> This is already possible using `partial' function in clojure core,
> which
> >>> also works for variable arity functions, e.g.
> >>>
> >>> (map (partial reduce +) [[1 2 3 4] [5 6 7 8]])
> >>>
> >>> Best -- Eric
> >>>
> >>> Sunil S Nandihalli <sunil.nandiha...@gmail.com> writes:
> >>>
> >>> > Hello everybody,
> >>> >  I remember that the key reasoning for not supporting currying in
> >>> > clojure
> >>> > was to be able to have variable number of arg functions.. So, I just
> >>> > thought
> >>> > a bit and realized that it should be possible to do that for fixed
> >>> > arity
> >>> > functions .. and then wrote the following macro to define a
> curry-able
> >>> > fixed-number-of-argument-function
> >>> >
> >>> > https://gist.github.com/745654
> >>> >
> >
> > If the following was defined as
> > (defn f [a b c d]
> >   (+ a b c d))
> >>>
> >>> > (def-curry-fn f [a b c d]
> >>> >   (+ a b c d))
> >>> >
> >>> > ((f 1) 2 3 4)  => 10
> >
> > the above s-expression using partial would become ...
> > ((partial f 1) 2 3 4) => 10
> >>>
> >>> > (((f 1 2) 3) 4) => 10
> >
> > and ((partial (partial f 1 2) 3) 4) => 10 instead of (((f 1 2) 3) 4)..
> > ((((f 1) 2) 3) 4) => 10
> > would become
> > ((partial (partial (partial f 1) 2) 3) 4) => 10 .....
> > I know there is no real practical utility .. .. it was just something I
> > wrote for fun.. and thought of sharing it ...
> > Sunil.
> >>>
> >>> >
> >>> > I just thought of sharing it with everybody. Would love to hear any
> >>> > criticisms you may have.
> >>> >
> >>> > Thanks for reading,
> >>> > Sunil
> >>>
> >>> --
> >>> 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<clojure%2bunsubscr...@googlegroups.com>
> >>> For more options, visit this group at
> >>> http://groups.google.com/group/clojure?hl=en
> >
> > --
> > 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<clojure%2bunsubscr...@googlegroups.com>
> > For more options, visit this group at
> > http://groups.google.com/group/clojure?hl=en
>
> --
> 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<clojure%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>

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