러스트 메모리 관리의 핵심은 affine type 인데 이건 절차형/저수준과는 별 관계 없는 개념이잖아
그럼 타입 정의에 ⊗, ⅋ 같은 준구조 연결사를 허용하면 (t : A -> B), (s : A) ==> (t s : B) 같은 타이핑 규칙만으로도 소유와 이전에 대한 개념을 표현하고 함수형 언어로도 러스트 같은 방식의 메모리 관리를 할 수 있는 것 아닌가?
그리고 이렇게 타입 시그니쳐에 모든 정보가 명시되면 컴파일 에러가 떠도 어디가 문제인지 더 알기 쉬울 것 같음. 어떤 조합이 허용되고 어떤게 안 되는지 syntactic하게 딱딱 나누어 떨어지니까. 물론 러스트가 목표로 하는 시스템 프로그래밍은 무리겠지만 하스켈처럼 코딩하면서 GC 없는 메모리 관리가 따라온다는 것만으로도 범용 프로그래밍에는 충분히 쓸만하지 않을까
찾아보면 Clean 이나 ATS 같은게 있긴 있는데 다 하꼬 언어들이라 실사용에 뭔가 문제가 있는지 궁금. 준구조 타입이랑 일반 타입을 섞는게 많이 어렵나?
일단 재귀하는 게 힘들어지지 않을까요 ㅇㅅㅇ?
보통 recursive call의 반환값을 몇번 사용하는지 컴파일 타임에 알기가 어렵나? 음...
하스켈 GC 있는데도 어려운데 거기에 소유권까지 넣을려고?
하스켈에서 어파인/리니어 하스켈로 가는 진입장벽이 C++ 에서 러스트로 가는 진입장벽보다 더 높을까? 물론 전자의 이득이 후자만큼 크지 않을 수는 있지만
ㅈㄴ 어려움 당장 러스트만해도 클로저 쓰기 아주 줫같음
https://medium.com/@maiavictor
가능은 한데 효용성은 써봐야할듯
일단 idris uniqueness type 같은 예가 있긴 함.