Haskell - Является ли порядок эффектов детерминированным в случае Applicative?

При выполнении действия ввода-вывода, определенногоsomeFun (a :: IO ()) (b :: IO ()), является выполнениеa а такжеb действия заказаны? То есть могу ли я рассчитывать на этоa выполняется раньшеb является?

Для GHC я вижу, что IO реализован с использованием State, а также вижуВот что это Аппликативный пример, но можетнайти источник фактического объявления экземпляра. Реализация через State предполагает, что различные эффекты IO должны быть последовательными, но неЭто необходимо определяет их порядок.

Игра в GHCi кажется, что Appliative сохраняет порядок эффектов, но это какая-то универсальная гарантия или специфическая для GHC? Я был бы заинтересован в деталях.

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]

Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос