I niedawno potknął generycznego Control.Applicative.optional
Combinator:przykładem dla parser dla `Control.Applicative.optional`
optional :: Alternative f => f a -> f (Maybe a)
optional v = Just <$> v <|> pure Nothing
ale nie mam dużo praktycznego użycia do tego Combinator; na przykład gdy stosowane do czystych funktorów takie jak listy lub Maybe
, wyniki nie wydają się bardzo przydatna:
> optional [1,2,3]
[Just 1,Just 2,Just 3,Nothing]
> optional Nothing
Just Nothing
> optional (Just 1)
Just (Just 1)
... co byłoby bardziej sensowne zastosowania optional
?
Cóż, parsery przychodzą na myśl :) –
W "Cafe" ostatnio odbyła się długa dyskusja na temat "niektórych" i "wielu", które mają takie same przypadki użycia, jak "opcjonalne", czyli parsery i "rzeczy, które mogą zawieść". .. http://www.haskell.org/pipermail/haskell-cafe/2011-December/097476.html –