stringtranslate.com

Строгая функция

В информатике и программировании функция f называется строгой , если при применении к нетерминализуемому выражению она также не завершается. [1] Строгая функция в денотационном семантике языков программирования — это функция f , где . Сущность , называемая bottom , обозначает выражение, которое не возвращает нормального значения, либо потому что оно бесконечно зацикливается, либо потому что оно прерывается из-за ошибки, такой как деление на ноль. Функция, которая не является строгой, называется нестрогой . Строгий язык программирования — это язык, в котором определяемые пользователем функции всегда строгие.

Интуитивно нестрогие функции соответствуют управляющим структурам . С точки зрения эксплуатации строгая функция — это та, которая всегда оценивает свой аргумент ; нестрогая функция — это та, которая может не оценивать некоторые из своих аргументов. Функции, имеющие более одного параметра, могут быть строгими или нестрогими по каждому параметру независимо, а также совместно строгими по нескольким параметрам одновременно.

В качестве примера, if-then-elseвыражение многих языков программирования, называемое ?:в языках, вдохновленных C, можно рассматривать как функцию трех параметров. Эта функция является строгой по своему первому параметру, поскольку функция должна знать, оценивается ли ее первый аргумент как true или как false, прежде чем она сможет вернуться; но она является нестрогой по своему второму параметру, поскольку (например) , а также нестрогой по своему третьему параметру, поскольку (например) . Однако она совместно является строгой по своему второму и третьему параметрам, поскольку и .if(false,,1) = 1if(true,2,) = 2if(true,,) = if(false,,) =

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

Смотрите также

Ссылки

  1. ^ "Небольшое введение в Haskell: Функции". www.haskell.org . Получено 23.06.2016 .