-- Arbitrary is sufficient for tunable, but it could add more control as well...
--
-- class Arbitrary t => Tunable t where

-- | The tuner takes a tunable and returns the best tuning parameter
-- for it after expending a (currently nonconfigurable) amount of
-- effort.
tune :: Tunable t =>
        (a -> t -> (b,Score)) -> t
tune = undefined
tune :: Tunable t =>
        (a -> t -> (b,Score)) -> t
tune = undefined
tune = undefined