implented forAll via foldRight