공부목적으로 language 하나만들면서 type inference 넣어보려고 공부 막 시작했는데 질문좀.


1. 컴파일타임에 추론가능한 모든것들에 대해서 (예를들면 a = b + c // a:int, b:int, c:int) 구현할때 Coq, Agda같은 proof-assistant (써본적없음) 걸로 구현하는게 어떻게생각하는지? 

장점으로는 증명,테스팅에 용이할것같은데 단점으로는 랭귀지 하나 더추가해서 관리해야한다는점? (단점아닐수도), proof-assistant와 컴파일러 코드간의 interface구축해야하는 further work가 생기는점? (컴파일러가 타입추론을 proof-assistant에게 넘겨야하니까). 그래서 질문은 장단점이뭔지, proof-assistant로 구현한 사례(레퍼런스)가 있는지, 조언 등 


2. OCaml이 힌들리밀너 이론으로 type inference를 구현했다고 들었는데 (자세히 찾아보진않음) 역사적으로 힌들리밀너 타입인퍼런스 뒤에 나온 이론 및 구현중에 힌들리밀너 타입인퍼런스 정도의 퍼포먼스 및 대중성을 보인 연구들이 있는지? 


3. 아무조언


감사합니다