
Serge D. Mechveliani wrote:
People,
Who knows, please, how usable are currently recursive module imports in Haskell, in GHC ? Is it essentially more difficult to `make' and support a project which has 50 modules, and half of all the module pairs import each other? Is recursive import in Haskell-98 ?
Newtype deriving doesn't work for recursive module imports, so I ended up just merging the two mutually recursive modules in my program into one module. The example was something like: module Control where import {-# SOURCE #-} Manager data Control ... -- functions using ManagerM module Manager where import Control data MState = MState{keyboard:: !(Maybe Control)} newtype ManagerM a = ManagerM (StateT MState IO a) deriving (Monad, MonadIO,MonadState) module Manager where {- hs.boot -} data MState -- newtype decl gives a compiler error (I can't remember what it was) newtype ManagerM a = ManagerM (StateT MState IO a) deriving (Monad, MonadIO,MonadState) So from the above experience I'd recommend not to use recursive modules at all. Regards, Brian. -- Logic empowers us and Love gives us purpose. Yet still phantoms restless for eras long past, congealed in the present in unthought forms, strive mightily unseen to destroy us. http://www.metamilk.com