/ Optional / traversable
traversable
 1      let Traversable = ./../Traversable/Type
 2  
 3  in  let Applicative = ./../Applicative/Type
 4  
 5  in      ./foldable
 6        ∧ ./functor
 7        ∧ { traverse =
 8                λ(f : Type → Type)
 9              → λ(applicative : Applicative f)
10              → λ(a : Type)
11              → λ(b : Type)
12              → λ(g : a → f b)
13              → λ(ts : Optional a)
14              → Optional/fold
15                a
16                ts
17                (f (Optional b))
18                (   λ(x : a)
19                  → applicative.map b (Optional b) (λ(y : b) → Some y) (g x)
20                )
21                (applicative.pure (Optional b) (None b))
22          }
23      : Traversable Optional