Haskell: ¿Es el orden del efecto determinista en el caso del aplicativo?

Al ejecutar la acción IO definida porsomeFun <$> (a :: IO ()) <$> (b :: IO ()), es la ejecución de laa yb acciones ordenadas? Es decir, ¿puedo contar con eso?a se ejecuta antesb ¿es?

Para GHC, puedo ver que la IO se implementa usando State, y también veoaquí que es una instancia aplicativa, pero no puede encontrar el origen de la declaración de instancia real. La implementación a través de State sugiere que los diferentes efectos de IO deben ser secuenciales, pero no necesariamente define su orden.

Jugar en GHCi parece que Appliative retiene el orden de efecto, pero ¿es eso alguna garantía universal o específica de GHC? Me interesaría en detalles.

import System.Time
import Control.Concurrent
import Data.Traversable
let prec (TOD a b) = b
fmap (map prec) (sequenceA $ replicate 5 (threadDelay 1000 >> getClockTime))

[641934000000,642934000000,643934000000,644934000000,645934000000]

¡Gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta