表达式的类型和值是什么:
do [1,2,3]; "lambda"
Run Code Online (Sandbox Code Playgroud)
我测试了它,发现它只打印lambda 3次.但我不明白为什么会那样做.我怎么能用bind重写它.感觉有必要重写它.
你的代码和
[1, 2, 3] >> "lambda"
Run Code Online (Sandbox Code Playgroud)
>> 被定义为
m >> n = m >>= \_ -> n
Run Code Online (Sandbox Code Playgroud)
并且>>=运算符被定义为列表:
xs >>= f = concat (map f xs)
Run Code Online (Sandbox Code Playgroud)
因此,您的代码可能会被翻译成:
concat $ map (const "lambda") [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
这产生了结果
"lambdalambdalambda"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |