>> Do you have commit access? What's your real name?
I prefer to remain pseudonymous, and I don't have commit access.

Yeah... they're not terribly useful - more or less there for the sake of being there. Batteries included and all that


...but now I've got a more useful idea for a function wrapper around predicate functions to make them a little more functionally inclined. Something like.......

@predicate
def hasnext(x): return hasattr(x, "next")

@predicate
def hasiter(x): return hasattr(x, "__iter__")

isiterable   = hasnext or hasiter   #or/and/not operators construct new predicate functions

isEmptyIterable = isiterable and not predicate(bool)

isgenerator = isiterable and (lambda x: hasattr(x, "send") and hasattr(x, "throw"))

filter(isgenerator or callable, SomeSequence)

--
"What's money? A man is a success if he gets up in the morning and goes to bed at night and in between does what he wants to do." ~ Bob Dylan