[Haskell-cafe] an advanced foldification problem

Seth Gordon sethg at ropine.com
Thu Jan 11 12:37:23 EST 2007

I have a data type "Group", representing a group of geographic
information that is all referring to the same location, and a function
"mergeGroups" that tries to merge two groups:

    mergeGroups :: Group -> Group -> Maybe Group

Then I have a function "mergeGroupToList" that tries to merge its first
argument with every element of the second argument:

    mergeGroupToList :: Group -> [Group] -> [Group]
    mergeGroupToList g [] = [g]
    mergeGroupToList g1 (g2:gs) =
        case (mergeGroups g1 g2) of
        Nothing -> g2 : (mergeGroupToList g1 gs)
        Just g3 -> mergeGroupToList g3 gs

How can I rewrite mergeGroupToList in terms of foldr?

More information about the Haskell-Cafe mailing list