FWIW, arguments in Racket are always passed on a stack.

Robby

On Sun, Jan 8, 2012 at 9:12 PM, Gregory Woodhouse <gregwoodho...@me.com> wrote:
> I suppose it could prevent certain optimizations in parameter passing, 
> forcing space for arguments to be allocated on the heap.
>
> Sent from my iPad
>
> On Jan 8, 2012, at 12:42 PM, Danny Yoo <d...@cs.wpi.edu> wrote:
>
>> On Sun, Jan 8, 2012 at 3:23 PM, Jordan Schatz <jor...@noionlabs.com> wrote:
>>> This code runs, but I'm guessing that its not the "right way" to do it.
>>>
>>> (define (js-date [i (current-date)])
>>>  (let ([original-format (date-display-format)]
>>>        [return ((λ ()
>>>                     (date-display-format 'rfc2822)
>>>                     (date->string i #t)))])
>>>    (date-display-format original-format)
>>>    return))
>>>
>>> 1) In "some other language" using a function as the default value for an
>>> argument is inefficient and frowned upon. Is that the case in racket?
>>
>> Hi Jordan,
>>
>> Can you give an example of such a language?  I'm curious.
>>
>> I'm not sure where the inefficiency would come from, unless computing
>> the default value expression's value is costly.
>>
>> According to the documentation in:
>>
>> http://docs.racket-lang.org/reference/lambda.html#(form._((lib._racket/private/base..rkt)._lambda))
>>
>> with regards to "default-expr": "... if no such argument is provided,
>> the default-expr is evaluated to produce a value associated with id."
>>
>> From the reference docs, it sounds like that, unlike a language like
>> Python, the default value is evaluated for every use of the function,
>> rather than just once when the function's defined.  We can experiment
>> with this:
>
> ____________________
>  Racket Users list:
>  http://lists.racket-lang.org/users

____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to