Jeff Shannon wrote:
It occurs to me that, in a statically compiled language, function definitions all happen before the program starts, and thus that definition can't be affected by other variables (i.e. an outer function's parameters).

I think you might be confusing static compilation in a language with lack of first-class functions in a language. OCaml is compiled, but functions are first class objects, and nested scopes are accessible:


# let f x =
     let g y =
        x + y
     in
        g;;
val f : int -> int -> int = <fun>
# f(1);;
- : int -> int = <fun>
# f(1)(2);;
- : int = 3

Note that the type of f is a function that takes an int and returns a function that takes an int and returns an int. OCaml handles nested scopes appropriately, and successfully compiles the function f (and infers the appropriate types). So the issue is not static compilation, but functions as first class objects.

Of course, many statically compiled languages, e.g. C, C++, Java, do not provide functions as first class objects, so the confusion is not unnatural...

Steve
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to