當我使用fmap
超過一個值時,它實質上「解開」該值,將該函數應用於該值並將其備份。Haskell中的泛型'unwrap'函數?
例如:
-- returns Just 8
fmap (+3) (Just 5)
是否有給我不拳擊回來了價值的功能?
-- returns 8
fmap_2 (+3) (Just 5)
當然,我不知道如何做到這一點的陣列工作,但它會爲Either
S和Maybe
S,對於初學者來說是有用的。我也可以用它來輕鬆地混合Monad:
-- myfunc :: Maybe Int
-- if myfunc returned a Just, show it and then print it. Otherwise, print 'Nothing'.
putStrLn . fmap show $ myfunc
或者是否有另一種混合Monads的標準方式?
不,沒有混合單子的標準方式。不可能有。 Monad不通勤。 然而,* some * monads可以混合在他們自己的特殊方式。將這種特殊的monad混合方式封裝起來的方法稱爲monad變壓器。有幾個單子變壓器的圖書館和廣泛的文獻。只是谷歌「monad變壓器」。 – 2012-02-27 07:24:32
看一看:[如何從monadic action中提取價值?](http://stackoverflow.com/questions/8567743/how-to-extract-value-from-monadic-action) – 2012-02-27 07:24:35