我想在 haskell 中拥有“return”(命令式语言)函数。
例如
main = do
let a = 10
print a
-- return this function
print $ a + 1
我怎样才能实现这个目标?
最佳答案
您可以使用 Exception
s 在某种程度上模拟这一点,
{-# LANGUAGE DeriveDataTypeable #-}
import Control.Exception
import Data.Typeable
data MyException = MyException deriving (Show, Typeable)
instance Exception MyException
main = handle (\ MyException -> return ()) $ do
let a = 10 :: Int
print a
throwIO MyException
print $ a + 1 -- never gets executed
您还可以使用 ContT
or ErrorT
monad transformers 来完成此操作,尽管它们可能有点笨拙。
关于haskell - 如何在haskell中执行 "break"IO操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25151406/