【发布时间】:2014-09-08 04:06:58
【问题描述】:
我有一些看起来像这样的代码,忽略所有与我的问题无关的代码:
import qualified Control.Monad.Reader as Reader
data FooEnv = FooEnv { bar :: Int -> Int }
type FooReader = Reader.Reader FooEnv
foo :: Int -> FooReader String
foo i = Reader.liftM show $ bar' i
where
bar' i' = do
bar'' <- Reader.asks bar
return $ bar'' i'
有没有办法重构这个?具体来说,嵌套的bar' 函数最困扰我。可以压缩成一行吗?
【问题讨论】:
标签: haskell refactoring monads do-notation reader-monad