optional definition

Dannyu NDos ndospark320 at gmail.com
Fri Sep 6 02:09:47 UTC 2019


I once used `traverse optional` combined with `catMaybes`. For example:

Prelude Control.Applicative Data.Maybe> catMaybes <$> traverse optional
[[1,2],[3]]
[[1,3],[1],[2,3],[2],[3],[]]

This is totally out of order. I think a more natural output is:

[[],[3],[1],[1,3],[2],[2,3]]

2019년 9월 1일 (일) 오후 11:23, Edward Kmett <ekmett at gmail.com>님이 작성:

> It would also render the combinator useless for its normal purpose.
>
> optional is used mostly to try to run a parser and to either succeed with
> its  result (wrapped in a Just) or _failing that_ to just  return Nothing
> and carry on.
>
> For monads like parsec, the first parse is the one that gets returned, so
> the definition isn't symmetric in behavior.
>
> -Edward
>
> On Sun, Sep 1, 2019 at 2:28 AM Dannyu NDos <ndospark320 at gmail.com> wrote:
>
>> The current 'one or none' definition breaks the order of elements.
>>
>> It is more Ord-friendly to define it as 'none or one'.
>> _______________________________________________
>> Libraries mailing list
>> Libraries at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20190906/217b3f80/attachment.html>


More information about the Libraries mailing list