module MpcTools where



-- reduce :: (SIO SecureTypes -> SIO SecureTypes -> SIO SecureTypes) -> [SIO SecureTypes] -> Maybe (SIO SecureTypes) -> SIO SecureTypes

-- reduce _ [] (Just iv) = iv

-- reduce _ [] Nothing = error "reduce: empty list with no initial value"

-- reduce _ [x] _ = x

-- reduce f xs iv =

--     let reduce' [] = []

--         reduce' [y] = [y]

--         reduce' (y1:y2:ys) = f y1 y2 : reduce' ys

--     in head (reduce' xs')

--     where xs' = maybe xs (:xs) iv