2012-12-09 15 views
7

Próbuję się dowiedzieć o TH, dowiedziałem się, że pozwala to na dowolne działania IO podczas kompilacji (patrz What's so bad about Template Haskell?). Wydaje mi się to dość niebezpieczne. Dlaczego? Czy to naprawdę konieczne w przypadku niektórych zadań? Czy może to tylko uproszczenie jego projektu, "wyrzucenie wszystkiego, co nieczyste do IO sin-bin"?Dlaczego szablon Haskell zezwala na dowolne operacje IO podczas kompilacji?

Aktualizacja: Byłbym również zainteresowany, czy są jakieś wysiłki na dokonanie safe podzbiór TH, który wykluczy arbitralnych IO operacje.

Odpowiedz

12

Jednym z głównych zastosowań Haskella jest budowanie stałych z zasobów zewnętrznych, takich jak duże wartości tekstowe z plików lub informacji o kompilacji (wersja, czas, środowisko). Oczywiście, robienie tego wymaga dostępu do systemu.

Potem przychodzi próba zbudowania bezpiecznego interfejsu API lub po prostu zezwolenie na dowolne IO. Ta ostatnia została wybrana z tego, jak prosta jest i jak łatwo jest uzyskać bezpieczny interfejs API.

Powiązane problemy