[Haskell-cafe] safe ways how to get head/last of Seq (or Foldable in general)

Petr Pudlák petr.mvd at gmail.com
Thu Feb 26 16:13:54 UTC 2015


Yes, that'd be my suggestion.

čt 26. 2. 2015 v 16:03 odesílatel David Feuer <david.feuer at gmail.com>
napsal:

> So are you suggesting that we add these to Data.Foldable?
>
> headMay = foldr (\x _ -> Just x) Nothing
> lastMay = foldl (\_ x -> Just x) Nothing
> On Feb 26, 2015 9:18 AM, "Petr Pudlák" <petr.mvd at gmail.com> wrote:
>
>> Hi,
>>
>> today I was a bit surprised that apparently there is no easy way how to
>> safely get the head element of `Seq` in a point-free way. Of course there
>> is `viewl`, but it seems the data type has no folding function (something
>> like 'foldViewL :: b -> (a -> Seq a -> b) -> b`.
>>
>> Is there any existing function like `Seq a -> Maybe a` to safely retrieve
>> the head (or last) element?
>>
>> If not, I'd suggest to add
>>
>>     headMaybe :: (Foldable t) => t a -> Maybe a
>>     headMaybe = getFirst . foldMap (First . Just)
>>
>> and similarly lastMaybe to Data.Foldable.
>>
>>   Thanks,
>>   Petr
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20150226/ee474656/attachment.html>


More information about the Haskell-Cafe mailing list