On Wed, 2009-05-27 at 09:27 +0200, Michele Simionato wrote:
> On Wed, May 27, 2009 at 9:11 AM, Derick Eddington
> <[email protected]> wrote:
> > On Wed, 2009-05-27 at 05:49 +0200, Michele Simionato wrote:
> >> http://www.artima.com/weblogs/viewpost.jsp?thread=249198
> >
> > The curried-lambda in that article is broken (IMO) because
> > (curried-lambda () b b* ...)
> > expands to
> > (begin b b* ...)
> >
> > This expansion also breaks (define-curried (f) ---).  Even though no one
> > should directly use curried-lambda or define-curried with zero
> > arguments, it's still broken because macros should be fully general so
> > they can be built upon by, say, other macros which expand to using
> > curried-lambda or define-curried and the zero-argument case can happen.
> >
> > Also, I consider it inadequate because it doesn't handle "rest"
> > arguments and because it requires applying one argument at a time (like
> > Ramana mentioned).
> 
> My curried-lambda does exactly what I wanted it to do. In particular
> I *wanted* curried-lambda with no arguments to return an expression,
> which I see as a zero-order function:
> 
> > (define-curried (f3 x1 x2 x3) "third-order")
> > (((f3 1) 2) 3) ;; 3 parens here
> "third-order"
> > (define-curried (f2 x1 x2) "second-order")
> > ((f2 1) 2) ;; 2 parens here
> "second-order"
> > (define-curried (f1 x1) "first-order")
> > (f1 1) ;; 1 parens here
> "first-order"
> > (define-curried (f0) "zero-order")
> > f0 ;; 0 parens here
> "zero-order"

Oh.  Interesting perspective.

-- 
: Derick
----------------------------------------------------------------

Reply via email to