Sep 14, 2014 19:24
Про implicit typing:
Писав на днях сервер на Happstack, а оскільки я тоді не додумався запускати ghci із :l Main.hs і дивитись типи обробників і таблиць маршрутизації (всі ці ServerPartT IO Response), то типові сигнатури я випускав, в результаті в мене вийшла програма на сотні три рядків практично без оголошень типів. Зручно? Можливо.
Але коли я в одному місці забув перед appendFile приписати liftIO, тайпчекер had gone wild: вирішивши, що тип серверних процедур це IO Response, він почав викидати абсурдні повідомлення про помилки на інших, коректних процедурах, не вказуючи на реальне джерело там, де був забутий liftIO.
Після цього я таки задумався, як з’ясувати дефолтний тип, який ховається за ServerMonad m, FilterMonad Response m, WebMonad та іншими констрейтами і написати явні типові анотації.
haskell,
програмістське