默认情况下,GHC会对以下函数执行尾调用优化吗?唯一奇怪的是它在递归定义IO操作,但我不明白为什么不能进行TCO。
import Control.Concurrent.MVar
consume :: MVar a -> [a] -> IO ()
consume _ [] = return ()
consume store (x:xs) = do putMVar store x
consume store xs