7
當我試圖瞭解TH我發現,它允許在編譯期間任意IO
行動(見What's so bad about Template Haskell?)。這對我來說似乎相當危險。這是爲什麼?有些任務真的需要嗎?或者它只是簡化了它的設計,「把不純的東西扔進污染的垃圾箱」?爲什麼模板Haskell在編譯期間允許任意的IO操作?
更新:我也有興趣,如果有在做TH的safe子集不允許任意IO
操作的任何努力。
當我試圖瞭解TH我發現,它允許在編譯期間任意IO
行動(見What's so bad about Template Haskell?)。這對我來說似乎相當危險。這是爲什麼?有些任務真的需要嗎?或者它只是簡化了它的設計,「把不純的東西扔進污染的垃圾箱」?爲什麼模板Haskell在編譯期間允許任意的IO操作?
更新:我也有興趣,如果有在做TH的safe子集不允許任意IO
操作的任何努力。
一爲模板哈斯克爾的主要預期用途是建立在從外部資源,如大型文本的常量從文件或建立信息(版本,時間,環境)。顯然,這需要系統訪問。
然後把它歸結爲試圖建立一個安全的API爲此,還是隻允許任意IO。後者的選擇取決於它的簡單程度,以及獲得安全API錯誤的容易程度。