Dan Burton, `maybeA <|> maybeB |> c` has type `Maybe a`, while `maybeA ?: maybeB ?: c` has type `a`. The sole purpose of `?:` is in extracting a value from `Maybe`, not lifting to it.
2013/10/12 Dan Burton <danburton.email@gmail.com>
It's not a completely different thing, it's the very same thing, but more general.-- Dan BurtonOn Sat, Oct 12, 2013 at 12:41 PM, Nikita Volkov <nikita.y.volkov@gmail.com> wrote:John Lato, you're offering a completely different thing and I would totally vote against it. Please don't flood.2013/10/12 John Lato <jwlato@gmail.com>
I'd prefer it if we had an operator in Control.Applicative such as|> :: Alternative f => f a -> a -> f al |> r = l <|> pure r
if it doesn't already exist, this would generalize fromMaybe, and complicated cases could be written asmaybeA <|> maybeB |> cbut even this could be easily written using <|> and pure, so I'm not sure it pulls its weight.
John L.On Sat, Oct 12, 2013 at 7:40 AM, Nikita Volkov <nikita.y.volkov@gmail.com> wrote:
I suggest to include this operator in "Data.Maybe" and "Prelude".
Implementation:(?:) :: Maybe a -> a -> amaybeA ?: b = fromMaybe b maybeAUse cases:1.maybeValue ?: error "Value is unexpectedly empty. This is a bug."instead offromMaybe (error "Value is unexpectedly empty. This is a bug.") maybeValue2.maybeA ?: maybeB ?: cinstead offromMaybe (fromMaybe c maybeB) maybeAName collisions:Hayoo search gives only 6 collisions with 5 hardly fundamental libraries.* The nickname and the operator itself are inspired by the ones from Groovy language.** The symbols of the operator are a reminder of plain old ternary construct.*** To understand the nickname look at the operator as on emoticon._______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries