Haskell语言学习笔记(16)Alternative
来源:互联网 发布:淘宝没有销量 编辑:程序博客网 时间:2024/05/29 17:16
Alternative
class Applicative f => Alternative f where empty :: f a (<|>) :: f a -> f a -> f aAlternative(选择)是个类型类。
what does Haskell's <|> operator do?
Alternative 的法则
empty <|> u = uu <|> empty = uu <|> (v <|> w) = (u <|> v) <|> w
[] 是 Alternative
instance Alternative [] where empty = [] (<|>) = (++)
Prelude Control.Applicative> [1] <|> [2][1,2]Prelude Control.Applicative> [1,2] <|> empty[1,2]
Maybe 是 Alternative
instance Alternative Maybe where empty = Nothing Nothing <|> r = r l <|> _ = l
Prelude Control.Applicative> Just 2 <|> Just 3Just 2Prelude Control.Applicative> Nothing <|> Just 3Just 3Prelude Control.Applicative> foldl1 (<|>) [Nothing, Just 5, Just 3]Just 5Prelude Control.Applicative> foldl (<|>) empty [Nothing, Just 5, Just 3]Just 5
asum 函数
asum :: (Foldable t, Alternative f) => t (f a) -> f aasum = foldr (<|>) empty
Prelude Data.Foldable> asum [Nothing, Just 5, Just 3]Just 5Prelude Data.Foldable> asum [[2],[3],[4,5]][2,3,4,5]
0 0
- Haskell语言学习笔记(16)Alternative
- Haskell语言学习笔记(1)
- Haskell语言学习笔记(2)
- Haskell语言学习笔记(4)Functor
- Haskell语言学习笔记(5)Applicative
- Haskell语言学习笔记(6)Monad
- Haskell语言学习笔记(8)Monoid
- Haskell语言学习笔记(14)Foldable
- Haskell语言学习笔记(17)MonadPlus
- Haskell语言学习笔记(18)Traversable
- Haskell语言学习笔记(21)Array
- Haskell语言学习笔记(22)MaybeT
- Haskell语言学习笔记(29)CPS
- Haskell语言学习笔记(31)ListT
- Haskell语言学习笔记(35)Contravariant
- Haskell语言学习笔记(39)Category
- Haskell语言学习笔记(42)Bifunctor
- Haskell语言学习笔记(45)Profunctor
- Ionic从零单排(四)——Ionic程序分离不同controller
- springmvc 使用validation验证!
- Codeforces Round #258 (Div. 2)题解
- window.onload 与 $(document).ready()区别
- MySQL 命令
- Haskell语言学习笔记(16)Alternative
- JVAEEE之forward与redirect的区别
- CENTOS6 下 ChkrootKit 和rkhunter
- margin负值
- 依赖注入框架-dragger2
- Linux 作为服务器操作系统的优势
- ARToolKit源代码学习笔记一:SimpleLite.c
- (POJ 3107 Godfather)树型DP + 删点
- 三天打鱼,两天晒网