GHC sẽ thực hiện tối ưu hóa đuôi cuộc gọi trên chức năng sau theo mặc định? Điều kỳ lạ duy nhất về nó là nó được đệ quy xác định một hành động IO, nhưng tôi không thấy lý do tại sao điều này không thể được TCO'd.GHC có thể kết nối cuộc gọi tối ưu hóa các hành động IO không?
import Control.Concurrent.MVar
consume :: MVar a -> [a] -> IO()
consume _ [] = return()
consume store (x:xs) = do putMVar store x
consume store xs