엄격성 분석

Strictness analysis

컴퓨터 과학에서 엄격성 분석비강제 기능 프로그래밍 언어의 함수가 하나 이상의 주장에서 엄격하다는 것을 증명하기 위해 사용되는 알고리즘을 말한다.이 정보는 엄격한 기능이 더 효율적으로 컴파일될 수 있기 때문에 컴파일러에게 유용하다.따라서 컴파일 시간에 어떤 함수가 엄격하다는 것이 입증되면(엄정성 분석을 사용하여) 엔클로저 프로그램의 의미를 변경하지 않고 보다 효율적인 호출 규약을 사용하도록 컴파일할 수 있다.

함수에 유의하십시오.f{ 을(를) 반환할 경우 작동상 다음과 같은 의미라고 한다.f동봉 프로그램이 비정상적으로 종료되거나(예: 오류 메시지와 함께 실패) 무한 반복될 수 있다.엄격한 함수는 분리가 되는 주장을 할 때 항상 분리가 되는 함수인 반면 게으른(또는 엄격하지 않은) 함수는 그러한 주장을 할 때 분리가 될 수도 있고 안 될 수도 있기 때문에 "분열"의 개념은 중요하다.엄격성 분석은 함수의 "분산 특성"을 결정하려고 시도하며, 따라서 엄격한 일부 함수를 식별한다.

엄격성 분석에 대한 접근 방식

전진 추상적 해석

엄격성 분석은 논쟁의 다양성 특성을 결과의 다양성 속성에 매핑하는 함수에 의해 프로그램의 각 기능에 근사치를 이루는 전향적 추상적 해석으로 특징지어질 수 있다.앨런 마이크로프트가 개척한 고전적 접근법에서 추상적 해석은 0이 인수나 반환 유형의 하위 집합으로 간주되는 집합 { 을 나타내고, 1은 유형 내의 모든 값을 나타내는 2점 도메인을 사용했다.[1]

수요분석

Glasgow Haskell Compiler(GHC)는 요구 분석이라고 알려진 후진 추상적 해석을 사용하여 다른 프로그램 분석뿐만 아니라 엄격성 분석을 수행한다.수요 분석에서, 각 함수는 결과에 대한 가치 요구에서 논쟁에 대한 가치 요구로 함수에 의해 모델링된다.함수는 결과에 대한 요구가 그 주장에 대한 요구로 이어진다면 논쟁에서 엄격하다.[2]

투영 기반 정밀도 분석

필립 와들러와 R.J.M. 휴즈가 도입한 투영 기반의 엄격성 분석은 엄격성 투영을 사용하여 목록 인수의 머리 엄격성 등 보다 미묘한 형태의 엄격성을 모델링한다.(대략 GHC의 요구 분석은 제품 유형, 즉 단일 생성자만 있는 데이터 유형 내에서 엄격성을 모델링할 수 있다.)= f {\ f= f }이() 목록 인수를 평가하는 투영법인 경우 f{\displaystyle \pi이(가)가 헤드 스트랙트로 간주된다[3]

1980년대에는 엄격성 분석에 관한 연구 기구가 많았다.

참조

  1. ^ Mycroft, Alan (1980). "The theory and practice of transforming call-by-need into call-by-value". Lecture Notes in Computer Science: Proc. 4th Intl. Symp. on Programming, Vol. 83. Springer-Verlag.
  2. ^ "The GHC Commentary: Demand analyser in GHC". Retrieved 2014-02-12.
  3. ^ Wadler, P.; R.J.M. Hughes (1987). "Projections for strictness analysis". Functional programming and computer architecture; LNCS 274. Springer-Verlag.