Ну, ответ - да, и нет. Нет способа просто написать инвариант отдельно от типа и проверить его. Однако это было реализовано в исследовательской ветке Haskell под названием ESC / Haskell: http://lambda-the-ultimate.org/node/1689
У вас есть различные другие опции. Например, вы можете использовать утверждения: http://www.haskell.org/ghc/docs/7.0.2/html/users_guide/assertions.html
Затем с соответствующим флагом Вы можете отключить эти утверждения для производства.
В более общем смысле, вы можете закодировать инварианты в ваших типах. Я собирался добавить сюда больше, но Донс избил меня до изюминки.
Еще один пример - это очень хорошее кодирование красно-черных деревьев: http://www.reddit.com/r/haskell/comments/ti5il/redblack_trees_in_haskell_using_gadts_existential/
GStreamer имеет плагин для прошивки. Также Gnash и klash - бесплатные SWF-плееры. Вы можете начать с этого приложения. Код бесплатный :)
С уважением