свободные и связанные идентификаторы в функциональном программировании

Я уже давно ломаю голову над этим вопросом и не могу понять. Я прочитал определение свободной переменной «Свободные переменные и связанные переменные» из Википедии и нескольких книг, но не могу ответить правильно.

Рассмотрим следующий код:

local A B C=1 D=2 in
  A = 1
  proc {Add E F G}
     E = A + D + F
  end
end

Какие из этих идентификаторов (A, B, C, D, E, F, G) являются свободными идентификаторами?


person Mihai Vinaga    schedule 26.10.2015    source источник


Ответы (2)


Концепция бесплатного идентификатора всегда имеет контекст. Если вы рассматриваете только оператор E=A+D+F, четыре идентификатора свободны. Но если вы рассмотрите определение процедуры, E и F теперь связаны, потому что они являются формальными параметрами. Таким образом, свободные идентификаторы — это A и D. Наконец, если вы рассмотрите весь код, который вы даете, свободного идентификатора не будет, поскольку все идентификаторы объявлены.

Ссылка: Концепции, методы и модели компьютерного программирования Питера Ван Роя и Сейфа Хариди.

В этом отношении интересны конец страницы 57 и страница 58.

Первые три главы доступны на платформе edX, если вы зарегистрируетесь на курс Парадигмы компьютерного программирования

person demesmaekerf    schedule 27.10.2015
comment
Спасибо, это курс, который я беру, и вопрос оттуда. - person Mihai Vinaga; 27.10.2015

Свободные идентификаторы любой инструкции — это те вхождения идентификатора внутри инструкции, которые соответствуют объявлениям вне инструкции.

Таким образом, кажется, что A и D были ответом.

person Mihai Vinaga    schedule 26.10.2015