有没有办法对monad中存储的值执行一个案例,而不必将名称绑定到它?
即而不是这样做:
c <- getChar
case c of
  ...
有没有办法做到这一点:
mcase getChar of
  ...
或者,如果case语句可以部分应用,那将是很好的:
case of
  ...
会不情愿地:
\a -> case a of
  ...
所以你可以这样做:
getChar >>= case of
              ...
Emm*_*ery 14
现在,FUZxxl提到的提案自从7.6.1开始在GHC中实施LambdaCase.
现在你可以这样做:
{-# LANGUAGE LambdaCase #-}
getChar >>= \case
   ...
请注意关键字\之前case以及of在这种情况下不存在的事实.
不,不是真的,但你可以将案例移到另一个函数中并将其应用于monadic动作的结果.
f x = case  x of ...
main = do
  f <$> getChar
或者,以下是可能的:
getChar >>= \x -> case x of ...