(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 <[email protected]> wrote:
> 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.
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to