Haskell 使用when/除非而不保存一元操作的结果
有没有一种不用变量Haskell 使用when/除非而不保存一元操作的结果,haskell,Haskell,有没有一种不用变量x的方法来写这个 foo = do x <- checker bar when x dostuff 但显然没有第二种病例模式。在对照组.Monad.Extra中,查看whenM。举个例子,那就是: foo = whenM (checker bar) doStuff 下面是一个较长的示例,仅向您展示如何在whenM结构中使用多个语句 foo = do doStuff1 doStuff2 whenM (checker bar) $ do doS
x
的方法来写这个
foo = do
x <- checker bar
when x dostuff
但显然没有第二种病例模式。在
对照组.Monad.Extra
中,查看whenM
。举个例子,那就是:
foo = whenM (checker bar) doStuff
下面是一个较长的示例,仅向您展示如何在whenM
结构中使用多个语句
foo = do
doStuff1
doStuff2
whenM (checker bar) $ do
doStuff3
doStuff4
doStuff5
doStuff6
最直接的答案是手工对
do
进行去语法处理,然后看看是否可以编写一些等效但更漂亮的代码。您的do
除砂器:
checker bar >>= \x -> when x dostuff
因此,答案必须看起来像checker bar>=f
,其中f
相当于
\x -> when x dostuff
嗯,这很像在时部分应用,对吗?除了要提供第二个参数而不是第一个参数外,您需要flip
it:
checker bar >>= flip when dostuff
checker bar >>= flip when dostuff