@sig((H/ "a" >> "a" >> "a")/ H >> ["a"] >> "a")
def foldr1(f, xs):
    """
    foldr1 :: (a -> a -> a) -> [a] -> a

    foldr1 is a variant of foldr that has no starting value argument, and thus
    must be applied to non-empty lists.
    """
    return foldr(f, xs[0], xs[1:])


#=============================================================================#
## Special folds
dataset/ETHPy150Open billpmurphy/hask/hask/Data/List.py/foldr1/swapped operands of `/`