Every expression like (x :: MoneyBase') |-| (y :: MoneyBase') will cause runtime exception of arithmetic underflow regardless x and y values. I guess implementation details of |-| themselves do cause exception:
(|-|) :: (d1 @~ d2, Num n) => Qu d1 l n -> Qu d2 l n -> Qu d1 l n
a |-| b = a |+| qNegate b
In example https://github.com/21it/src/blob/76f6bc3d1660b9fb02a66f6b48efd39368a232a2/bitfinex-client/src/BitfinexClient/Data/Metro.hs#L72-L73
Every expression like
(x :: MoneyBase') |-| (y :: MoneyBase')
will cause runtime exception ofarithmetic underflow
regardlessx
andy
values. I guess implementation details of|-|
themselves do cause exception: