簡體   English   中英

關於一元價值的案例

[英]case on monadic value

有沒有辦法對存儲在monad中的值執行一個案例,而不必將名稱綁定到它?

即而不是這樣做:

c <- getChar
case c of
  ...

有沒有辦法做到這一點:

mcase getChar of
  ...

或者,如果case語句可以部分應用,那將是很好的:

case of
  ...

會不情願地:

\a -> case a of
  ...

所以你可以這樣做:

getChar >>= case of
              ...

現在,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 ...

答案是不。 在Haskell 98中,如果不在其中使用名稱,則不能使用case語句。 但有一項建議是增加對case-lambdas的支持。 他們提出的語法與您提出的語法相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM