Thanks Neil and Richard ! Now that I look at your solutions, it looks so straightforward. Can't believe it didn't occur to me.
On Sat, Apr 30, 2011 at 7:31 AM, Neil Van Dyke <[email protected]> wrote: > nikhil wrote at 04/30/2011 03:16 AM: > > In my case, I have an incoming function which takes 4 arguments and I need >> to generate a function which takes in 5 args when a condition satisfies, if >> not then the original 4 args . >> > > From looking at the example you provided, two ways come to mind > immediately. Either way is fine. Which you use depends on the > circumstances, including code maintainability. > > #lang racket > > (define (f? x) > ;; This is just a placeholder for "f?". > #t) > > (define (condition?) > ;; This is just a placeholder for "condition?". > (zero? (random 2))) > > ;; This uses ",@" splicing. > (define (parse-func-1 exp) > (let ((x1 'x1) (x2 'x2) (x3 'x3) (x4 'x4)) > > (cond > [(f? exp) > `(FF > ,x1 > ,x2 > ,@(if (condition?) > '(xNEW) > '()) > ,x3 > ,x4)]))) > > ;; This moves the "if" higher up. > (define (parse-func-2 exp) > (let ((x1 'x1) (x2 'x2) (x3 'x3) (x4 'x4)) > (cond > [(f? exp) > (if (condition?) > `(FF > > ,x1 > ,x2 > xNEW > ,x3 > ,x4) > `(FF > ,x1 > ,x2 > ,x3 > ,x4))]))) > > > > -- > http://www.neilvandyke.org/ >
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users

