Семантика отношений сокращения вызова по необходимости и вызова по имени

Пытаясь обобщить свои знания о лямбда-исчислении, я понял, что хорошо знаком с вызовом по значению, но никогда не видел семантики сокращения вызова по необходимости. Я знаю определение, но было бы здорово увидеть точное значение.

Вот что у меня есть для call-by-need и call-by-value (не очень подробное описание):

Вызов по значению

Маленький шаг

  • Ценности

    значения

  • β-восстановление

    βv

  • Контекст оценки

    контекст

    контекст cbv

Большой шаг (с замыканиями и окружением)

  • Закрытия

    закрытия

  • Окружающая среда

    окружающая среда

  • Снижение

    cbv var

    cbv lam

    приложение cbv


Вызов по имени

Маленький шаг

  • β-восстановление

    Nβv

  • Контекст оценки

    cbn context

    cbn eval context


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

Так что я буду признателен, если кто-то может расширить мой список с вызовом по необходимости.


person vonaka    schedule 29.10.2017    source источник


Ответы (1)


В настоящее время я не могу написать это в Tex, но главное: при использовании чистых функций оцениваемое значение функции с одним и тем же параметром(ами) всегда будет одним и тем же, поэтому, пока вы находитесь в одном и том же теле, вы можете использовать оцененная ссылка вместо ее повторной оценки.

Для получения дополнительной информации см.: http://repository.readscheme.org/ftp/papers/plsemantics/felleisen/jfp96-af.pdf

person Ádám Révész    schedule 29.10.2017