Many functions can be generalised

Mario Blažević mblazevic at stilo.com
Thu Dec 1 00:40:02 UTC 2016


On 2016-11-30 04:08 AM, Baldur Blöndal wrote:
> What about functions that aren't expected to preserve structure like
> ‘lookup’ and (new) suggestions
>
>> lookup :: Eq a => k -> Foldable f => f (k, v) -> Maybe v
>> lookup = lookupOf folded

-1. It needs to die.


>> elemIndex :: Eq a => a -> Foldable f => f a -> Maybe Int
>> elemIndex = elemIndexOf folded
>
>> elemIndices :: Eq a => a -> Foldable f => f a -> Maybe Int
>> elemIndices = elemIndicesOf folded
>
>> findIndex :: (a -> Bool) -> Foldable f => f a -> Maybe Int
>> findIndex = findIndexOf folded
>
>> findIndices :: (a -> Bool) -> Foldable f => f a -> [Int]
>> findIndices = findIndicesOf folded

	I'm +0.5 on these but only if they come in together with the (!!) 
operator, which should then be added as a Foldable class method to allow 
for optimizations. Without (!!) there'd be no way to express the laws 
these operations need to satisfy.



More information about the Libraries mailing list