The Foldable instance for Maybe is one of the biggest warts in Haskell. It's not limited to Haskell, by the way.
def getUsers(f):
return (logged_in_users(f), logged_out_users(f))
def userCount(f):
return len(getUsers(f))