有一堆IO计算,其结果无关紧要,并且依赖于相同的上下文变量.我希望以一种美学的方式将这个论点传递给所有函数.
假设我想多次打印一个char
c = 'c'
main = do
putChar c
putChar c
putChar c
Run Code Online (Sandbox Code Playgroud)
但我不想每次都写这个参数.
以下工作正常:
samearg :: (Foldable t, Monad m) => t (a -> m ()) -> a -> m ()
samearg fs ctx = foldl (\d f -> d >>= \_ -> f ctx) (return ()) fs
(>^=) = flip samearg
'c' >^= [putChar,putChar,putChar]
Run Code Online (Sandbox Code Playgroud)
现在,我只是好奇我是否可以根据我最初的想法写出一些东西,或者是否有一些标准的方法来做到这一点.我想写一些类似的东西'c' >^= putChar >^= putChar >^= putChar会减少到这一点
((return 'c' >>= putChar >>= \_ -> return 'c')
>>= putChar >>= \_ -> …Run Code Online (Sandbox Code Playgroud) haskell ×1