Data.Maybe

Prelude Data.Maybe> maybe "" show (Just 5)
"5"
Prelude Data.Maybe> maybe "" show Nothing
""
Prelude Data.Maybe> isJust (Just 3)
True
Prelude Data.Maybe> isJust Nothing
False
Prelude Data.Maybe> isNothing (Just 3)
False
Prelude Data.Maybe> isNothing Nothing
True
Prelude Data.Maybe> fromJust (Just 1)
1
Prelude Data.Maybe> 2 * (fromJust Nothing)
*** Exception: Maybe.fromJust: Nothing
Prelude Data.Maybe> fromMaybe "" (Just "Hello, World!")
"Hello, World!"
Prelude Data.Maybe> fromMaybe "" Nothing
""
Prelude Data.Maybe> listToMaybe []
Nothing
Prelude Data.Maybe> listToMaybe [1,2,3]
Just 1
Prelude Data.Maybe> maybeToList (Just 7)
[7]
Prelude Data.Maybe> maybeToList Nothing
[]
Prelude Data.Maybe> catMaybes [Just 1, Nothing, Just 3]
[1,3]
Prelude Data.Maybe> let readMaybeInt = Text.Read.readMaybe :: String -> Maybe Int
Prelude Data.Maybe> mapMaybe readMaybeInt ["1", "Foo", "3"]
[1,3]

Data.Either

Prelude Data.Either> either length (*2) $ Left "foo"
3
Prelude Data.Either> either length (*2) $ Right 3
6
Prelude Data.Either> lefts [ Left "foo", Right 3, Left "bar", Right 7, Left "baz" ]
["foo","bar","baz"]
Prelude Data.Either> rights [ Left "foo", Right 3, Left "bar", Right 7, Left "baz" ]
[3,7]
Prelude Data.Either> isLeft (Left "foo")
True
Prelude Data.Either> isLeft (Right 3)
False
Prelude Data.Either> isRight (Left "foo")
False
Prelude Data.Either> isRight (Right 3)
True
Prelude Data.Either> fromLeft 1 (Left 3)
3
Prelude Data.Either> fromLeft 1 (Right "foo")
1
Prelude Data.Either> fromRight 1 (Right 3)
3
Prelude Data.Either> fromRight 1 (Left "foo")
1
Prelude Data.Either> partitionEithers [ Left "foo", Right 3, Left "bar", Right 7, Left "baz" ]
(["foo","bar","baz"],[3,7])

Haskell语言学习笔记(32)Data.Maybe, Data.Either的更多相关文章

  1. Haskell语言学习笔记(93)Data.Text

    Data.Text.Read Prelude> :set -XOverloadedStrings Prelude> :m +Data.Text.Read Prelude Data.Text ...

  2. Haskell语言学习笔记(76)Data.Tree

    Data.Tree data Tree a = Node { rootLabel :: a, subForest :: Forest a } deriving (Eq, Read, Show) typ ...

  3. Haskell语言学习笔记(28)Data.Map

    Map Prelude> import Data.Map as Map Prelude Map> :set -XOverloadedLists Prelude Map> Overlo ...

  4. Haskell语言学习笔记(48)Data.Tuple

    Data.Tuple fst :: (a,b) -> a fst (x,_) = x snd :: (a,b) -> b snd (_,y) = y curry :: ((a, b) -& ...

  5. Haskell语言学习笔记(81)Data.Typeable

    Data.Typeable 利用 Data.Typeable,可以打印动态类型信息. class Typeable (a :: k) where typeRep# :: TypeRep a typeR ...

  6. Haskell语言学习笔记(77)Data.HashSet

    安装 unordered-containers $ cabal install unordered-containers Installed unordered-containers-0.2.9.0 ...

  7. Haskell语言学习笔记(65)Data.HashMap

    安装 unordered-containers $ cabal install unordered-containers Installed unordered-containers-0.2.9.0 ...

  8. Haskell语言学习笔记(55)Data.Vector

    Data.Vector Construction Prelude V> import Data.Vector as V Prelude V> V.empty [] Prelude V> ...

  9. Haskell语言学习笔记(54)Data.Set

    Data.Set Prelude> import Data.Set as Set Prelude Set> :set -XOverloadedLists Construction Prel ...

  10. Haskell语言学习笔记(53)Data.Sequence

    Data.Sequence Prelude> import Data.Sequence as Seq Prelude Seq> :set -XOverloadedLists Prelude ...

随机推荐

  1. RabbitMQ-官方指南-RabbitMQ配置

    原文:http://www.rabbitmq.com/configure.html RabbitMQ 提供了三种方式来定制服务器: 环境变量 定义端口,文件位置和名称(接受shell输入,或者在环境配 ...

  2. Spring Cloud 入门 之 Config 篇(六)

    原文地址:Spring Cloud 入门 之 Config 篇(六) 博客地址:http://www.extlight.com 一.前言 随着业务的扩展,为了方便开发和维护项目,我们通常会将大项目拆分 ...

  3. Spring MVC 3.0 深入及对注解的详细讲解[转载]

    http://blog.csdn.net/jzhf2012/article/details/8463783 核心原理 1.       用户发送请求给服务器.url:user.do 2.       ...

  4. 微信JSSDK分享朋友圈微信自定义分享接口

    服务项目 新手技术咨询 企业技术咨询 定制开发 服务说明 QQ有问必答 QQ.微信.电话 微信开发.php开发,网站开发,系统定制,小程序开发 价格说明 200元/月 1000/月 商议       ...

  5. win7/win8/win10 php5.6 redis扩展(适用于iis/nginx/apache),亲测

    win7 php5.6 redis扩展   步骤: 1.下载redis扩展 redis扩展下载地址:http://windows.php.net/downloads/pecl/snaps/redis/ ...

  6. 胡乱摸的NOIP2017游记和总结

    来自YZK的总结 本篇总结主要分成两部分:NOI Professional游记和平日的刷题训练. 今年的NOI Professional TG的难度在洛谷上标记为:二黄一绿三紫.恭喜NOIP今年全面脱 ...

  7. Redis:Redis

    ylbtech-Redis:Redis 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   7.返回顶部   8.返回顶部   9.返回顶部 ...

  8. selenium进阶

    一.切换 1.window窗口切换 @Test public void test3(){ System.out.println(driver.getWindowHandle()); String ol ...

  9. js字符串转换成数字,数字转换成字符串

    转自网络,忘记出处了. js字符串转换成数字 将字符串转换成数字,得用到parseInt函数. parseInt(string) : 函数从string的开始解析,返回一个整数. 举例:parseIn ...

  10. Work01

    7101:我是最酷的张绥:我的爱是弹吉他,唱歌,游泳,打篮球...: 我的博客是:https://www.cnblogs.com/Mrzs/ 我的码云个人主页是:https://gitee.com/s ...