cookbook-2.2.0.0: Cookbook/Ingredients/Tupples/Assemble.hs
{- |
Module : Cookbook.Ingredients.Tupples.Assemble
Copyright : (c) 2014 by Nate Pisarski
License : BSD3
Maintainer : nathanpisarski@gmail.com
Stability : Stable
Portability : Portable (Standalone - ghc)
Library for arranging and modifying lists of twopples. Dubber Tuppers? There has to be a better word for this. It works on two-sided Tupples.
-}
module Cookbook.Ingredients.Tupples.Assemble where
-- | Sorts a list of Tupples based on their second element.
tupsort :: (Ord b) => [(a,b)] -> [(a,b)]
tupsort [] = []
tupsort ((a,n):xs) = lesser ++ [(a,n)] ++ greater
where lesser = tupsort [(c,d) | (c,d) <- xs, d <= n]
greater = tupsort [(c,d) | (c,d) <- xs, d > n]
-- | Order a list of tupples by their rval, and collect the lvals as a list.
assemble :: (Ord b) => [(a,b)] -> [a]
assemble = map fst . tupsort
-- | Removes all double-entries from a list of tupples, contingent on just lval.
rmDb :: (Eq a) =>[(a,b)] -> [(a,b)]
rmDb [] = []
rmDb ((a,b):c) = (a,b) : rmDb [(d,e) | (d,e) <- c, d /= a]