
On Sun, 27 Nov 2016, amindfv@gmail.com wrote:
I'd also be -1. Function generalization sometimes has a cost in comprehensability, and there aren't enough benefits to make it worth it to me.
And you lose type inference in more cases.
maybeToList :: Foldable f => f a -> [a] maybeToList = toList
Why should we have two names for Foldable.toList, where maybeToList even is no longer special to Maybe?
take :: Int -> (forall f a. Foldable f => f a -> [a]) take n = toListOf (taking n folded)
drop :: Int -> (forall f a. Foldable f => f a -> [a]) drop n = toListOf (dropping n folded)
cycle :: Foldable f => f a -> [a] cycle = toListOf (cycled folded)
I'd prefer an extension to Monoid, i.e. take :: (??? m) => Int -> m -> m drop :: (??? m) => Int -> m -> m cycle :: (Semigroup m) => m -> m Yet, I do not propose to replace Prelude functions by this generalisations.