Source code on Github
{-# OPTIONS --without-K #-}
module Class.Traversable.Instances where

open import Class.Prelude
open import Class.Functor
open import Class.Monad
open import Class.Traversable.Core

instance
  Traversable-Maybe : Traversable Maybe
  Traversable-Maybe .sequence = λ where
    nothing   return nothing
    (just x)  x >>= return  just

  Traversable-List : Traversable List
  Traversable-List .sequence = go
    where go = λ where
      []        return []
      (m  ms)  do x  m; xs  go ms; return (x  xs)

  Traversable-List⁺ : Traversable List⁺
  Traversable-List⁺ .sequence (m  ms) = do x  m; xs  sequence ms; return (x  xs)