Jump to content

Анализ строгости

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

Обратите внимание, что функция f говорят, что он расходится, если возвращается : с оперативной точки зрения это будет означать, что f либо приводит к ненормальному завершению включающей программы (например, сбой с сообщением об ошибке), либо к бесконечному циклу. Понятие «расхождение» важно, потому что строгая функция — это функция, которая всегда расходится, когда ей дан расходящийся аргумент, тогда как ленивая (или нестрогая) функция — это функция, которая может расходиться, а может и не расходиться, когда ей дан такой аргумент. Анализ строгости пытается определить «свойства дивергенции» функций, что, таким образом, идентифицирует некоторые функции, которые являются строгими.

Подходы к анализу строгости

[ редактировать ]

Прямая абстрактная интерпретация

[ редактировать ]

Анализ строгости можно охарактеризовать как прямую абстрактную интерпретацию , которая аппроксимирует каждую функцию в программе функцией, которая отображает свойства расхождения аргументов на свойства расхождения результатов. В классическом подходе, впервые предложенном Аланом Майкрофтом , абстрактная интерпретация использовала двухточечную область , где 0 обозначает множество рассматривается как подмножество типа аргумента или возвращаемого значения, а 1 обозначает все значения типа. [1]

Анализ спроса

[ редактировать ]

Компилятор Glasgow Haskell (GHC) использует обратную абстрактную интерпретацию, известную как анализ спроса, для выполнения анализа строгости, а также другого анализа программы. В анализе спроса каждая функция моделируется функцией от требований к значению результата к требованиям к значениям аргументов. Функция является строгой в отношении аргумента, если требование ее результата приводит к требованию этого аргумента. [2]

Анализ строгости на основе прогнозов

[ редактировать ]

Анализ строгости на основе проекций, предложенный Филипом Уодлером и Р.Дж.М. Хьюзом , использует проекции строгости для моделирования более тонких форм строгости, таких как строгость головы в аргументе списка. (Напротив, анализ спроса GHC может моделировать строгость только внутри типов продуктов , т. е. типов данных, которые имеют только один конструктор .) Функция считается строгим, если , где — это проекция, которая вычисляет аргумент списка. [3]

В 1980-х годах было проведено большое количество исследований по анализу строгости.

  1. ^ Майкрофт, Алан (1980). «Теория и практика преобразования вызова по необходимости в вызов по значению». Конспект лекций по информатике: Учеб. 4-й международный Симп. по программированию, Vol. 83 . Спрингер-Верлаг.
  2. ^ «Комментарий GHC: анализатор спроса в GHC» . Проверено 12 февраля 2014 г.
  3. ^ Вадлер, П.; РДЖМ Хьюз (1987). «Прогнозы для анализа строгости». Функциональное программирование и компьютерная архитектура; ЛНКС 274 . Спрингер-Верлаг.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 32b6babdf7c3bb4d667a4781c0ed2862__1610564640
URL1:https://arc.ask3.ru/arc/aa/32/62/32b6babdf7c3bb4d667a4781c0ed2862.html
Заголовок, (Title) документа по адресу, URL1:
Strictness analysis - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)