def red(s, f): x = s[0] for i in range(1, len(s)): x = f(x, s[i]) return x def prvni_nenulovy(s): def f(x, y): if x != 0: return x else: return y return red(s, f) # Zde předpokládáme, že seznam neobsahuje None # (dalo by se to obejít tak, že bychom místo None použili jakýkoliv # nově vytvořený objekt, třeba prázdný seznam) def vsechny_stejne(s): def g(x, y): if x is None or x != y: return None else: return x return red(s, g) is not None