Open lgarithm opened 6 years ago
Currently std::invalid_argument
should be sufficient for our use case.
We should limit the usage of exception in the phase of building logical model, which would trigger a fast fail.
To archive this, we might need to introduce two kinds of context, one allows throwing exception, and one doesn't. (This sounds like the IO monad in Haskell).
should use c++20 contract when it is available