我有很多風格的代碼:在Haskell,結合「案例」和「>> =」
do
x <- getSomething
case x of
this -> ...
that -> ...
other -> ...
我的任何方式相結合的「X < - ...」和「案件「消除對變量的需求?
我有很多風格的代碼:在Haskell,結合「案例」和「>> =」
do
x <- getSomething
case x of
this -> ...
that -> ...
other -> ...
我的任何方式相結合的「X < - ...」和「案件「消除對變量的需求?
您可以使用綁定運算符>>=
來管道x
。
import System.Environment (getArgs)
main :: IO()
main = getArgs >>= process
where process ["xxx"] = putStrLn "You entered xxx"
process ["yyy"] = putStrLn "You entered yyy"
process _ = putStrLn "Error"
我這樣做,因爲
foo "this" = return 2
foo "that" = return 3
main = foo =<< getSomething
這種方法的好處是,如果foo是純那麼這將成爲
main = foo <$> getSomething
因此,代碼保留相同的形狀有所改變情況。
如果你想非常接近的東西:
getSomething >>= caseOf
this -> expr1
that -> expr2
other -> expr3
那麼我認爲你只是運氣不好 - 有在Haskell沒有這樣的語法。但知道你並不孤單。馬克·瓊斯定義的習慣語言,包括一種一元情況下的語法:
case<- getSomething of
Nothing -> expr1
Just x -> expr2 x
他指這是一個「案例從」在語言定義語句。
我希望'case'是'\ x - > case x of'的簡寫。 – dave4420 2010-08-04 12:08:53