
6 Apr
2013
6 Apr
'13
7:18 p.m.
On Sun, 7 Apr 2013 01:02:12 +0300 Ömer Sinan Ağacan
I'm not happy with this design because to me it was like I'm missing the point of using a 'functional' language.
You kind of do, e.g. you might not be able to test parts of your program independently.
For instance, in most parts of my code I can actually do IO.
You can disable IO in parts of your code by making it polymorphic over monad. {-# LANGUAGE RankNTypes #-} type MonadStack = ErrorT Err (StateT St IO) type MonadStackNoIO = forall m. Monad m => ErrorT Err (StateT St m)