[racket] Bouncing default value

From: Rodolfo Carvalho (rhcarvalho at gmail.com)
Date: Sat Feb 11 12:12:25 EST 2012

On Sat, Feb 11, 2012 at 15:07, Rodolfo Carvalho <rhcarvalho at gmail.com>wrote:

> Hello,
>
> On Sat, Feb 11, 2012 at 14:55, Laurent <laurent.orseau at gmail.com> wrote:
>
>> ...
>>
>> (define (bar [arg2 (get-default-value foo arg2)])
>>   (foo 5 arg2))
>>
>>
>>
> Maybe someone will have a better idea (or a brighter implementation), but
> if not, here's my contribution:
>
> ....
>

If we use #f for arg2 in foo, we can write:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#lang racket
(require rackunit)

(define (foo arg1 [arg2 #f])
  (+ arg1 (or arg2 10)))

(define (bar [arg2 #f])
  (let ([arg1 5])
    (foo arg1 arg2)))

(check-= (bar 2) 7 0)
(check-= (bar) 15 0)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

This way it is not necessary to accommodate for calling foo with different
number of args. All we need is to propagate the #f default value.


[]'s

Rodolfo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20120211/b69c569a/attachment.html>

Posted on the users mailing list.