딱봐도 찾아보면 litefime하고 타입 시스템 엮는 논문 나올것 같이 생겼음
그리고 existential lifetime이런것도 나름 의미가 있을듯.
물론 러스트는 litefime subtyping이 되니까 딱히 필요 없는데, subtyping을 대체 해서 사용할 수 있는 예가 있는것 같음.
예를 들어서 List<T, \'a> 를 \'a 보다 긴 라이프 타입을 가진 T타입 값들의 리스트라고 하면
Cons :: \'b >= \'a -> &\'b T -> List<T, \'a> -> List<T, \'a>
이런식으로 existential type 비슷하게 lifetime을 쓸 수 있음.
\'b >= \'a 는 서브 타이핑 관계를 나타내는 타입 같은거
(>=) :: Lifetime -> Lifetime -> Type
문법은 러스트와 하스켈의 끔찍한 혼종이다
수명은 그냥 누가 언제죽냐만 따지면 끝인데 그런 복잡한건 필요없을듯
경험상 이렇게 쓸데없는것도 꼭 사용처 찾아오는 사람들이 있음
애초에 함수형에서는 evaluation 순서라는게 없는데 lifetime 도 이론적으로는 존재하지 않는 개념 아님? - return 0;
linear type 이나 비슷한 개념에서의 함수는 기존의 함수하고 조금 다르니까. 평범한 함수하고 완전히 같게 볼 수는 없을듯