On Sun, Jul 20, 2014 at 5:02 AM, קוראל אלימלך <coral2...@gmail.com> wrote:
> Hey :)
> How the arguments are passed in racket?
> by value/ reference/name?
>
> If u can add an example it will b good :)
> Thank U !
>

I suspect two different things are being conflated here:

1. the reduction semantics of the language
2. the question of whether or not data is copied at procedure-call boundaries.


For (1), Racket's reduction strategy is call-by-value. As Jos Koot has
demonstrated, in a procedure-call expression:

  (fn-expr argn-expr...)

all of the sub-expressions will be reduced (that is, evaluated) to
values before the function is applied.

For (2), Racket does not copy data at procedure-call boundaries. If
you pass a mutable struct, the callee is able to make changes to it
that are visible to the caller. This is unlike in C, where you would
need to pass a pointer to a struct in order to allow the callee to
operate on the same instance as the caller.

Unfortunately, "call-by-X" terminology is used to refer to both things
and usually in ways that make matters far more confusing than they
need be. See, e.g.,
[http://en.wikipedia.org/wiki/Evaluation_strategy], which is just
awful.

-Jon

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

Reply via email to