List.find : ∀(A: *) ∀(cond: ∀(x: A) Bool) ∀(list: (List A)) (Maybe A) = λA λcond λlist use P = λx (Maybe A) use cons = λhead λtail use found = (cond head) use P = λx (Maybe A) use true = (Maybe.some A head) use false = (List.find A cond tail) (~found P true false) use nil = (Maybe.none A) (~list P cons nil)