Строгая функция
Эта статья нуждается в дополнительных цитатах для проверки . ( июль 2016 г. ) |
В информатике и компьютерном программировании функция f называется строгой , если при ее применении к незавершающемуся выражению она также не может завершиться. [1] Строгая функция в денотационной семантике языков программирования — это функция f , где . Сущность , называемый нижней , обозначает выражение, которое не возвращает нормальное значение либо потому, что оно повторяется бесконечно, либо потому, что оно прерывается из-за ошибки, такой как деление на ноль. Функция, которая не является строгой, называется нестрогой . Строгий язык программирования — это язык, в котором пользовательские функции всегда строгие.
Интуитивно нестрогие функции соответствуют структурам управления . С функциональной точки зрения строгая функция — это функция, которая всегда оценивает свой аргумент ; нестрогая функция — это функция, которая может не оценивать некоторые из своих аргументов. Функции, имеющие более одного параметра, могут быть строгими или нестрогими по каждому параметру независимо, а также совместно строгими по нескольким параметрам одновременно.
В качестве примера, if-then-else
выражение многих языков программирования, называемое ?:
в языках, вдохновленных C, можно рассматривать как функцию трех параметров. Эта функция является строгой в отношении своего первого параметра, поскольку функция должна знать, имеет ли ее первый аргумент значение true или false, прежде чем она сможет вернуться; но он нестрогий по второму параметру, потому что (например) if(false,,1) = 1
, а также нестрого по третьему параметру, потому что (например) if(true,2,) = 2
. Однако он является одновременно строгим по второму и третьему параметрам, поскольку if(true,,) =
и if(false,,) =
.
В нестрогом программирования функциональном языке анализ строгости относится к любому алгоритму, используемому для доказательства строгости функции по отношению к одному или нескольким ее аргументам. Такие функции можно скомпилировать в соответствии с более эффективным соглашением о вызовах , например вызовом по значению , без изменения смысла включающей программы.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Нежное введение в Haskell: функции» . www.haskell.org . Проверено 23 июня 2016 г.