monads for batLazyList (purity/persistence makes it good for IO monads)