@sig(H/ (H/ "a" >> bool)  >> ["a"] >> (["a"], ["a"]))
def break_(p, xs):
    """
    break :: (a -> Bool) -> [a] -> ([a], [a])

    break, applied to a predicate p and a list xs, returns a tuple where first
    element is longest prefix (possibly empty) of xs of elements that do not
    satisfy p and second element is the remainder of the list
    """
    inv = (lambda x: not p(x)) ** ("a"/ H >> bool)
    return span(inv, xs)
dataset/ETHPy150Open billpmurphy/hask/hask/Data/List.py/break_/swapped operands of `/`