The reason I redefined Eq is: When doing `union` over two list of MyTuple is just base on its first element. Basically it means: [(1,2), (2,2)] `union` [(1,0), (2,0), (0,0)] produce [(1,2), (2,2), (0,0)] rather than [(1,2),(2,2),(1,0),(2,0),(0,0)] by default.
-Haisheng On Sun, Feb 5, 2012 at 11:37 PM, Yves Parès <yves.pa...@gmail.com> wrote: > Concerning your first solution, I don't understand why you redefine Eq but > not Ord instance. Ord will still work by comparing the tuples and not the > first elements of said tuples. > Plus the good news is you don't have to do this: just use regular tuples > and use sort*By *or group*By *functions from Data.List with the 'on' > function from Data.Function. > For instance your Eq instance could have been written > x == y = (==) `on` (fst . getTuple) > > With regular tuples you can write "sortBy (compare `on` fst)". > > > Plus can you rewrite your original imperative algorithm with the right > variable names? You're using a 'd' array that's not been defined. > > > 2012/2/5 Haisheng Wu <fre...@gmail.com> > >> a = [1,1,1,1] >> b = [0,1,2,3] >> d = [0,0,0,0] >> >> for i in b: >> for j in c: >> if (i+j)<3: >> d[i+j] += a[i] >> >> My just work implementation in Haskell >> http://hpaste.org/57452 >> >> Another people implementation in Haskell with Monad and it turns out >> complex and very imperatively. >> http://hpaste.org/57358 >> >> Do you have any cool solution in FP way? >> >> Thanks. >> -Simon >> >> _______________________________________________ >> Haskell-Cafe mailing list >> Haskell-Cafe@haskell.org >> http://www.haskell.org/mailman/listinfo/haskell-cafe >> >> >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe