I think you're looking for and and or. You don't specify which flavor of Scheme you're using, but I think those are standard macros. (Note that they're implemented as recursive macros—not functions—otherwise you couldn't get the desired short-circuiting behavior.)