神奇的客串化

转载 2015年07月07日 23:35:08


do 代码块实际上是把操作连接在一起的快捷记号。有两个运算符可以用来代替 do 代码块: >>  >>= 。在 ghci 看一下它们的类型:

ghci> :type (>>)
(>>) :: (Monad m) => m a -> m b -> m b
ghci> :type (>>=)
(>>=) :: (Monad m) => m a -> (a -> m b) -> m b

>> 运算符把两个操作串联在一起:第一个操作先运行,然后是第二个。运算符的计算的结果是第二个操作的结果,第一个操作的结果被丢弃了。这和在 do 代码块中只有一行是类似的。你可能会写 putStrLn "line 1" >> putStrLn "line 2" 来测试这一点。它会打印出两行,把第一个 putStrLn 的结果丢掉了,值提供第二个操作的结果。

>>= 运算符运行一个操作,然后把它的结果传递给一个返回操作的函数。那样第二个操作可以同样运行,而且整个表达式的结果就是第二个操作的结果。例如,你写 getLine >>= putStrLn ,这会从键盘读取一行,然后显示出来。

让我们重写例子中的一个,不用 do 代码快。还记得这一章开头的这个例子吗?

-- file: ch07/basicio.hs
main = do
       putStrLn "Greetings!  What is your name?"
       inpStr <- getLine
       putStrLn $ "Welcome to Haskell, " ++ inpStr ++ "!"

我们不用 do 代码块来重写它:

-- file: ch07/basicio-nodo.hs
main =
    putStrLn "Greetings!  What is your name?" >>
    getLine >>=
    (\inpStr -> putStrLn $ "Welcome to Haskell, " ++ inpStr ++ "!")

你定义 do 代码块的时候,Haskell编译器内部会把它翻译成像这样。

神奇的拉普拉斯平滑(Laplacian Smoothing)及其在正则化上的应用~

之前的博客介绍过自己对于正则化的理解,经过这段时间的进一步接触,尤其是看了一些关于这一方面的paper,做了一些简短的实验,发现正则化真是一个很给力的建模方法。近期,看到了Laplacian Smoo...
  • bbbeoy
  • bbbeoy
  • 2017年05月06日 11:01
  • 318

C/C++语言中#的神奇作用:把宏参数字符串化/贴合宏参数

宏中"#"和"##"的用法  一、一般用法   我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. #define STR(s)      #s   #define...

简单易学多维数据可视化R实现:神奇的卡通脸谱图Chernoff faces

Chernoff face是由美国统计学家Chernoff在1976年率先提出的,用脸谱来分析多维度数据,即将P个维度的数据用人脸部位的形状或大小来表征。 他首先将该方法用于聚类分析...
  • newusb
  • newusb
  • 2015年09月29日 14:51
  • 2672

[随机化 矩阵乘法] BZOJ 2396 神奇的矩阵 & 51Nod 1140 矩阵相乘结果的判断 & POJ 3318 Matrix Multiplication

不说了 经典 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace ...

Python之数据可视化神奇-Matplotlib

今天给大家介绍一些常用的Matplotlib图表,希望对大家有所帮助,接下来我们看代码吧! 一 : 线形图import numpy as np import pandas as pd import ...

C/C++语言中#的神奇作用:把宏参数字符串化/贴合宏参数

http://blog.csdn.net/peter_teng/article/details/9730831
  • gjtboa
  • gjtboa
  • 2016年07月13日 18:27
  • 143

4. 化平淡为神奇的BeautifulSoup

BeautifulSoup介绍这玩意啊,是用来解析复杂的网络结构的。 例如最普通的网页:html head title--title head bo...

如何在iOS上实现苹果电脑最小化窗口时的“神奇效果”(即吸入吸出效果在iPhone上的实现)

先看一下效果 1.首先创建一个新工程,结构是TabbarViewController+UIViewController*4 @interface AppDelegate () { ...

神奇的【设备联动API】,助力智能家电/家居场景化

日前,机智云已面向开发者/厂商推出了设备联动API,助力智能家居场景化。   设备联动API, 顾名思义,是通过设定规则,能让不同设备将实现联动。例如:早晨离家时,主人只需轻点手机上的“离家”模...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:神奇的客串化
举报原因:
原因补充:

(最多只允许输入30个字)