Прицел Stati c и Dynami c с неглубоким переплетом и глубоким переплетом - PullRequest
0 голосов
/ 11 февраля 2020

У меня проблема с решением этого упражнения. Язык не определен (это не C и не другой язык). Такие параметры, как:
y в функциях f;
z в функции m;
w в функциях k и h;
передаются по значению.
* указывает умножение. Выражения выражаются слева направо.

{int x = 1; 
int y = 1; 
int z = 1; 
inf f (int y) { 
    int m (int z) { 
        return z+x;}; 
    y = m(z); 
    return y}; 
(int -> int) g ((int -> int)n){ 
             int z = 3; 
             x=n(z); 
             int k(int w) { 
                 return 4*w}; 
             return k}; 
 int h(int w) { 
     int x =1; 
     w=f(w)+z; 
     x=w+1; 
     return x}; 
 {int x =5; 
 x=g(h)(x)+h(z);}

}

int -> int указывает, что я передаю значение функции int, и функции возвращают значение int.

Мой вопрос являются:

1) Если у меня есть область действия stati c, какое значение будет содержать переменную x после выполнения строки 21? И почему?

2) Если у меня есть динамическая область действия c, какое значение будет содержать переменную x после выполнения строки 21 с использованием глубокого связывания? И почему?

3) Если у меня есть динамическая область действия c, какое значение будет содержать переменную x после выполнения строки 21 с использованием поверхностного связывания? И почему?

4) Предполагая, что параметр y в функции f передается по ссылке, какое значение будет содержать переменную x после выполнения строки 21 с использованием stati c scope? И почему?

5) Предполагая, что параметр w в функции h передается по ссылке, какое значение будет содержать переменную x после выполнения строки 21 с использованием stati c scope? И почему?

6) Предполагая, что параметр z в функции m передается по ссылке, какое значение будет содержать переменную x после выполнения строки 21 с использованием stati c scope? А почему?

...