Sorry, I forgot that. Magicloud.Map.mapM sure is a helper I use as lifted Data.Map.map. If I changed the type of the result of start, the Jobs module compiled. But still cannot compile with the other module (which uses start). And the error is on JobArgs. I post the function here, I am not sure how could I fix it.
mapM :: (Monad m, Ord k) => (a -> m b) -> M.Map k a -> m (M.Map k b) mapM f m = let (ks, as) = unzip $ M.toList m in Prelude.mapM f as >>= return . M.fromList . zip ks On Mon, Jun 25, 2012 at 5:11 PM, Ivan Lazar Miljenovic <ivan.miljeno...@gmail.com> wrote: > On 25 June 2012 19:04, Arlen Cuss <a...@len.me> wrote: >> Magicloud, >> >> Try to reduce the particular problem you're having to the smallest possible >> example that reproduces the issue. None of us can compile your code, either, >> because we're missing many of the dependencies, and unfortunately the issue >> is no easier (for me) to track down with the full source listing in this >> case. > > Though line 22 reveals something: I don't know what Magicloud.Map.mapM > is, though I'm guessing it's a lifted version of Data.Map.map. > However, I would guess that it's a type problem. > > Try changing the type of start to be ` start :: (Ord k, Exception e) > => JobArgs k a -> (a -> IO b) -> IO (M.Map k (JobInfo a e)) '; I would > hazard a guess that you would get the same error, and thus the problem > isn't with `type', it's that your mapping function isn't quite > correct. > >> >> Cheers, >> >> Arlen >> >> >> On Monday, 25 June 2012 at 5:46 PM, Magicloud Magiclouds wrote: >> >>> Here is the code, I joined two modules in one paste. Both of them >>> cannot pass compiling. >>> >>> http://hpaste.org/70418 >>> >>> On Mon, Jun 25, 2012 at 2:16 PM, Ivan Lazar Miljenovic >>> <ivan.miljeno...@gmail.com (mailto:ivan.miljeno...@gmail.com)> wrote: >>> > On 25 June 2012 12:50, Magicloud Magiclouds >>> > <magicloud.magiclo...@gmail.com (mailto:magicloud.magiclo...@gmail.com)> >>> > wrote: >>> > > Hi, >>> > > There was another mail, but the subject might be confusing. So I >>> > > write this one. The code is here: http://hpaste.org/70414 >>> > > If I understand correct, generally, I could use 'type' to do alias >>> > > to save the ugly-long code. Like section 1. This works when I 't [(0, >>> > > Just "x")]'. >>> > > >>> > > But, if I wrote section 2. Then 'start (M.fromList $ zip ord_args) >>> > > worker' could not be compiled due to the second argument is type of >>> > > 'M.Map Arg Arg', not 'JobArgs Arg Arg'. >>> > >>> > >>> > >>> > This shouldn't make a difference. As an example, this works: >>> > >>> > > import qualified Data.Map as M >>> > > >>> > > type Foo a b = M.Map a b >>> > > >>> > > fooInsert :: (Ord a) => a -> b -> Foo a b -> Foo a b >>> > > fooInsert = M.insert >>> > >>> > >>> > >>> > Aliases are just for documentation; they shouldn't affect code working. >>> > >>> > >>> > > >>> > > What did I miss to make this work? >>> > > -- >>> > > 竹密岂妨流水过 >>> > > 山高哪阻野云飞 >>> > > >>> > > And for G+, please use magiclouds#gmail.com (http://gmail.com). >>> > > >>> > > _______________________________________________ >>> > > Haskell-Cafe mailing list >>> > > Haskell-Cafe@haskell.org (mailto:Haskell-Cafe@haskell.org) >>> > > http://www.haskell.org/mailman/listinfo/haskell-cafe >>> > >>> > >>> > >>> > >>> > >>> > -- >>> > Ivan Lazar Miljenovic >>> > ivan.miljeno...@gmail.com (mailto:ivan.miljeno...@gmail.com) >>> > http://IvanMiljenovic.wordpress.com >>> >>> >>> >>> >>> >>> -- >>> 竹密岂妨流水过 >>> 山高哪阻野云飞 >>> >>> And for G+, please use magiclouds#gmail.com (http://gmail.com). >>> >>> _______________________________________________ >>> Haskell-Cafe mailing list >>> Haskell-Cafe@haskell.org (mailto:Haskell-Cafe@haskell.org) >>> http://www.haskell.org/mailman/listinfo/haskell-cafe >> >> >> > > > > -- > Ivan Lazar Miljenovic > ivan.miljeno...@gmail.com > http://IvanMiljenovic.wordpress.com -- 竹密岂妨流水过 山高哪阻野云飞 And for G+, please use magiclouds#gmail.com. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe