Кіріспе
Компьютерлік ғылымда қатаңдық талдауы - қатаң емес функционалдық бағдарламалау тіліндегі функция бір немесе бірнеше аргументтерінде қатаң екенін дәлелдеу үшін қолданылатын кез келген алгоритм. Бұл ақпарат компиляторларға пайдалы, өйткені қатаң функцияларды тиімдірек құрастыруға болады. Осылайша, егер функция компиляция кезінде қатаң (қатаңдық талдауын пайдалана отырып) екені дәлелденсе, оны қоршау бағдарламасының мағынасын өзгертпей, тиімдірек шақыру конвенциясын пайдалану үшін компиляциялауға болады. F функциясы егер ол қайтып келсе, f функциясы әр түрлі болады деп айтылады: операциялық түрде бұл f немесе қоршау бағдарламасының қалыпты емес аяқталуына әкеледі (мысалы, қате хабарламасы бар сәтсіздік) немесе ол шексіз циклге айналады дегенді білдіреді. "Аралық" ұғымы маңызды, өйткені қатаң функция әрқашан әртүрлі аргумент берілген кезде әртүрлі болады, ал жалқау (немесе қатаң емес) функция осындай аргумент берілген кезде әртүрлі болуы мүмкін немесе болмауы мүмкін. Строготалық талдау функцияның "айырмалы қасиеттерін" анықтауға тырысады, осылайша кейбір функциялар қатаң болып табылады.
Айналымның алдын ала түсіндірілуі
Строгость талдауды алға қарайғы абстрактті интерпретация ретінде сипаттауға болады, ол бағдарламадағы әрбір функцияны аргументтердің дивергенттік қасиеттерін нәтижелердің дивергенттік қасиеттеріне карталайтын функция арқылы жуықтады. Алан Майкрофт бастаған классикалық тәсілде абстрактілік түсіндіру екі нүктелі доменді қолданды, 0 аргумент немесе қайтару түрінің кіші жиынтығы ретінде қарастырылған жиынтықты білдіреді, ал 1 типтегі барлық мәндерді білдіреді.
Сұраныс талдауы
Глазго Хаскелл компиляторы (GHC) талапты талдау деп аталатын артқа қараған абстрактілік интерпретацияны қатаңдық талдауын, сондай-ақ басқа бағдарламалық талдауларды орындау үшін қолданады. Талапты талдау кезінде әрбір функция нәтиженің мәндік талаптарынан аргументтердің мәндік талаптарына дейінгі функциямен үлгіленеді. Егер функцияның нәтижесіне деген сұраныс осы аргументтің сұранысына әкелсе, онда функция аргументте қатаң болып табылады.
Проекцияға негізделген қатаңдық талдауы
Филип Уадлер мен Р. Дж. М. Хьюз енгізген проекцияға негізделген қатаңдық талдауы қатаңдықтың неғұрлым нәзік түрлерін модельдеу үшін қатаңдық проекцияларын қолданады, мысалы тізім аргументіндегі бас қатаңдығы. (Бұл GHC сұранысты талдау тек өнім түрлерінің, яғни тек бір конструкторға ие деректер түрлерінің қатаңдығын модельдей алады.) Егер , онда функция head strict деп саналады, онда head өзінің тізім аргументін бағалайтын проекция қайда. 1980 жылдары қатаңдық талдау бойынша көптеген зерттеулер жүргізілді.