Program Tip

Haskell의 Data.Typeable은 무엇입니까?

programtip 2020. 10. 27. 23:08
반응형

Haskell의 Data.Typeable은 무엇입니까?


Haskell에 대한 참조를 Data.Typeable보았지만 내 코드에서 왜 그것을 사용하고 싶은지 명확하지 않습니다.

어떤 문제를 어떻게 해결합니까?


Data.Typeable범용 유형을 사용하여 정적으로 유형이 지정된 언어로 지연된 (동적) 유형 검사를 구현하는 잘 알려진 접근 방식 (예 : Harper 참조)의 인코딩입니다 .

이러한 유형은 이후 단계까지 유형 검사가 성공하지 못하는 코드를 래핑합니다. 잘못된 형식으로 프로그램을 거부하는 대신 컴파일러는 런타임 검사를 위해 프로그램을 전달합니다.

이 스타일은 Abadi et al.에서 시작되었으며 모든 동적 유형을 나타내는 래퍼로 Cheney와 Hinze가 Haskell을 위해 개발했으며, Typeable클래스는 SPJ와 Lammel의 SYB 작업의 일부로 나타납니다.


참고


교과서에서도 : 동적 유형 (입력 가능한 표현 포함)은 Harper ch 20이라는 한 유형 만있는 정적으로 유형이 지정된 언어입니다.

20.4 Untyped는 Uni-Typed를 의미합니다.

유형이 지정되지 않은 λ- 미적분은 재귀 유형이있는 유형이 지정된 언어에 충실하게 삽입 될 수 있습니다. 즉, 모든 유형이 지정되지 않은 λ-term은 λ-term의 표현 실행이 용어 자체의 실행에 해당하는 방식으로 유형이 지정된 표현으로 표현됩니다. 이 삽입은 하지 ℒ {+ × ⇀μ} (우리가 확실히 할 수있는)에서 λ 미적분에 대한 통역을 쓰기의 문제가 아니라 재귀 종류의 언어로 입력 한 표현으로 지정되지 않은 λ-용어의 직접적인 표현 .

핵심 관찰은 유형지정되지 않은 λ- 미적분은 실제로 단일 유형의 λ- 미적분이라는 것입니다! 힘을주는 것은 유형 부재아니라 재귀 유형이라는 하나의 유형 가지고 있다는 것입니다.

D = µt.t → t.


무엇보다도 이름 지정 유형을 허용하는 라이브러리입니다. 유형 a이 선언 Typeable되면 show $ typeOf xwhere xis any value of type을 사용하여 이름을 가져올 수 있습니다 a. 또한 제한된 유형 캐스팅을 제공 합니다.

(이것은 C ++의 RTTI 또는 동적 언어의 반영과 다소 유사합니다.)


Data.TypeableHaskell과 유사한 라이브러리에 대한 가장 빠른 설명 중 하나는 1992 년 John Peterson의 것입니다. http://www.cs.yale.edu/publications/techreports/tr1022.pdf

실제 Data.Typeable라이브러리 를 소개 한 것으로 알고있는 가장 초기의 "공식" 문서는 2003 년의 첫 번째 Scrap Your Boilerplate 문서입니다. http://research.microsoft.com/en-us/um/people/simonpj/Papers/hmap/index.htm

여기 누군가가 함께 할 수있는 개입 된 역사가 많이 있다고 확신합니다!


Data.Typeable 클래스는에 제네릭 프로그래밍에 주로 사용되는 스크랩 귀하의 상용구 (SYB) 스타일. Data.Data 도 참조하십시오.

아이디어는 SYB가 다양한 사용자 생성 유형에 대해 균일 한 방식으로 인쇄, 계산, 검색, 대체 등과 같은 작업을 수행하기위한 컬렉션 결합자를 정의한다는 것입니다. Typeabletypeclass 필요한 배관을 제공합니다.

최신 GHC에서는 deriving Data.Typeable필요한 인스턴스를 제공하기 위해 자신의 유형을 정의 할 때 말할 수 있습니다 .

참고 URL : https://stackoverflow.com/questions/6600380/what-is-haskells-data-typeable

반응형