2012-12-09 4 views
7

내가 TH에 대해 배우려고 할 때 컴파일 중 임의의 IO 동작을 허용한다는 것을 알았습니다 (What's so bad about Template Haskell? 참조). 이것은 나에게 아주 위험한 것처럼 보인다. 왜 그런가요? 일부 작업에 정말로 필요한가요? 또는 "IO sin-bin"에 불순한 모든 것을 던지라는 디자인의 단순화입니까?Template Haskell이 컴파일하는 동안 임의의 IO 작업을 허용하는 이유는 무엇입니까?

업데이트 : 임의의 IO 작업을 허용하지 TH의 safe 하위 집합을 만들기에서 어떤 노력이있는 경우 나 또한 관심이있을 것입니다.

답변

12

Template Haskell의 주요 용도 중 하나는 파일의 큰 텍스트 값이나 빌드 정보 (버전, 시간, 환경)와 같은 외부 리소스의 상수를 작성하는 것입니다. 분명히 그렇게하려면 시스템 액세스가 필요합니다.

그런 다음 안전한 API를 만들거나 임의의 IO를 허용하려고 시도합니다. 후자는 얼마나 간단한 지, 안전한 API를 잘못 얻는 것이 얼마나 쉬운 지 선택되었습니다.

관련 문제