
(I won't answer your main question, I'll just write some notes on your
current code.)
On Sun, Nov 7, 2010 at 10:40 PM, Mitar
neurons <- growNeurons [ do { a <- attach nerve1; return $ Growable a }, do { a <- attach nerve2; return $ Growable a }, do { a <- attach nerve3; return $ Growable a } ]
Note that this is the same as neuros <- growNeurons [ Growable <$> attach nerve1, Growable <$> attach nerve2, Growable <$> attach nerve3]
Types of attach and deattach are (if I simplify):
attach :: Nerve n -> IO (LiveNeuron n) deattach :: LiveNeuron n -> IO ()
Growable is only used so that I can put actions of different type in the list.
Well, you could use attachG :: Nerve n -> IO Growable attachG n = Growable <$> attach n ... neurons <- growNeurons [attachG nerve1, attachG nerve2, attachG nerve3] Cheers, -- Felipe.