utop[0]> open Core.Std;; utop[1]> let a = lazy (printf "A\n"; 0);; val a : int lazy_t = <lazy> utop[2]> let b (a : int) = lazy (printf "B\n"; 0);; val b : int -> int lazy_t = <fun> utop[3]> Lazy.force Lazy.(a >>= b);; A B - : int = 0