C.C.Speculation.Traversable
traverse
:: (Traversable t, Applicative f, Eq a)
㱺 (Int ! a) ! (a ! f b) ! t a ! f (t b)
traverse g f xs =
runAccT (T.traverse go xs) 0
where
go a = AccT $ λi# ! acc
(i# +# 1#)
(spec (g (I# i)) f a)
newtype AccT m a = AccT
{ runAccT :: Int# ! Acc (m a) }
133݄31༵