마이크로소프트에서 F-star라는 언어 만들어서, 안전한 https 스택 구현하는 연구 플젝을 진행 중임

이 언어의 튜토리얼 앞 부분만 읽었는데, 이 언어는 타입 시스템에 effect가 포함 돼 잇더라고

아무 effect 없이 무적권 종료되는 함수면 그 return type이 Tot Int (Total의 약자임)

ML에서 정의된 exception이 발생할 수도 있지만, 연산이 종료된다면 무조건 Int를 반환하는 함수면, ML Int가 리턴 타입임

이 컨셉을 알고 나니, 비로소 IO a의 의미를 직관적으로 받아들이게 됏음

그리고 밑에 올린 하스켈 98 테크니컬 리포트 읽으니까, 비로소 하스켈로 뭔가 실용적인 걸 짜볼 수 있겠다는 느낌을 받음

forkIO나 IORef나 MVar 같은 애들 내부 구현도 시간 나면 찾아볼 예정

하지만 여전히 의문이 남는 부분은, IO a를 a로 바꾸려면 unsafePerformIO 이거 써야 되는 거 같은데, 이거 웬만하면 쓰지 말라고 하더라고?

그럼 파일에서 스트링 읽어서 처리하는 그런 라이브러리를 짜고 싶으면, IO String 타입을 쓰는 건 아닐테고

String에 대해서 짜고 나중에 return이나 pure로 올려서 써먹으면 되는 거겠지?


오늘 일기 끝