haskell - lambda 表达式中分号的含义

标签 haskell lambda syntax

类型:

data Command a = Command String (a -> IO a) 

功能:

iofunc_ :: String -> (a -> IO ()) -> Command a
iofunc_ s f = Command s (\x -> do f x ; return x)

分号在 lambda 表达式 (\x -> do f x ; return x) 中起什么作用?

最佳答案

它们只是用 do 表示法分隔两个表达式 f xreturn x。事实上,这些在您的情况下都是等效的:

iofunc_ s f = Command s (\x -> do f x ; return x)

iofunc_ s f = Command s (\x -> do {f x ; return x})

iofunc_ s f = Command s (\x -> do f x
                                  return x)

iofunc_ s f = Command s (\x -> f x >> return x)

关于haskell - lambda 表达式中分号的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27646966/

相关文章:

haskell - 通过 c2hsc 和 hsc2hs 连接 Haskell 中的 C 联合

c++ - 为什么 C++20 不允许使用显式类型调用泛型 lambda?

java - Java 矩阵的异常

haskell - 跨度和模式匹配

function - 使用累加器的 Haskell 递归

java - 匿名类作为泛型参数

actionscript-3 - AS3 : should private variables have an _

scala - scala中下划线(_)和三重问号(???)的区别

multithreading - Haskell:为什么 `par` 是这样定义的?

c# - 动态构建 lambda 表达式