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