-
[프언] #16. Procedure Overloading and Parametric Polymorphism2023-2학기/프로그래밍언어 2023. 12. 13. 16:10
Type Annotation을 사용할 때, 일반적인 방법으로는 Polymorphic Procedure를 사용할 수 없습니다. 변수의 Type이 고정되어 있기 때문이죠. Polymerphic Procedure를 사용하기 위해서, 함수가 실제로 호출될 때 Type을 정해주는 방식을 사용합니다. 이를 Type Abstraction이라고 합니다.
let f = proc[A](x: A) (x 1) in ...
예시를 통해 좀 더 설명해 보겠습니다.
let f = typeAbst[A] ( proc(a: A) a } in ( if (f[bool](true)) f[int](11) else f[int](12) )
이 코드에서 f는 어떤 값을 받아 그 값을 그대로 출력하는 프로시져입니다. 이 프로시져의 타입은 이 프로시져가 호출될 때 결정됩니다. 이를 도입한 Semantic은 아래와 같습니다.
감사합니다.
이 글은 컴퓨터공학과 학부생이 개인 공부 목적으로 작성한 글이므로, 부정확하거나 틀린 내용이 있을 수 있으니 참고용으로만 봐주시면 좋겠습니다. 레퍼런스 및 글에 대한 기본적인 정보는 이 글을 참고해 주세요.
'2023-2학기 > 프로그래밍언어' 카테고리의 다른 글
[프언] #18. Algebraic Data Type (0) 2023.12.13 [프언] #17. Lambda Calculus (0) 2023.12.13 [프언] #15. Subtype Polymorphism (0) 2023.12.13 [프언] #14. Let-Polymorphic Type System (0) 2023.12.10 [프언] #13. Automatic Type Inference (1) 2023.12.10