package fj.demo; import fj.F; import fj.data.Option; import static fj.Show.intShow; import static fj.Show.optionShow; import static fj.data.Option.none; import static fj.data.Option.some; public final class Option_bind { public static void main(final String[] args) { final Option<Integer> o1 = some(7); final Option<Integer> o2 = some(8); final Option<Integer> o3 = none(); F<Integer, Option<Integer>> f = i -> i % 2 == 0 ? some(i * 3) : none(); final Option<Integer> o4 = o1.bind(f); final Option<Integer> o5 = o2.bind(f); final Option<Integer> o6 = o3.bind(f); final Option<Integer> p1 = o1.bind(i -> i % 2 == 0 ? some(i * 3) : Option.none()); final Option<Integer> p2 = o2.bind(i -> i % 2 == 0 ? some(i * 3) : Option.none()); final Option<Integer> p3 = o3.bind(i -> i % 2 == 0 ? some(i * 3) : Option.none()); optionShow(intShow).println(o4); // None optionShow(intShow).println(o5); // Some(24) optionShow(intShow).println(o6); // None } }