safeSub :: SafeValue h a -> SafeValue h a -> Maybe (SafeValue h a)
safeSub (Value x) (Value y) = do
    guard (y <= x)
    return $ Value (x - y)
safeSub :: SafeValue h a -> SafeValue h a -> Maybe (SafeValue h a)
safeSub (Value x) (Value y) = do
    guard (y <= x)
    return $ Value (x - y)
safeSub (Value x) (Value y) = do
    guard (y <= x)
    return $ Value (x - y)