This adds dynamic settings to the Forscape language, which update the compiler settings within a lexical scope.
As wacky as the feature sounds, it's the right design decision.
- We want CAS code with symbolic computation, and numeric code without snowballing computation from infinite precision
- We don't want to overspecify in the code, e.g. float(pi), sym('x'), float(5/2), or rat(5, 2)
- We sometimes want to support imaginary numbers, and sometimes treat them as errors
- We want library writers to pick their own settings, and avoid C++ style warnings from external libraries
=> we need dynamic settings, the cleanest and most general way being lexically-scoped settings
- New users need to discover valid settings / values
- Power users need to avoid excessive typing
=> update settings via a UI form
- Need to interact with settings
- Don't want possibility of invalid settings
- Want to quickly parse settings
=> use a Construct
Dynamic settings support the future goals of Forscape, and should be implemented well here.
This adds dynamic settings to the Forscape language, which update the compiler settings within a lexical scope.
As wacky as the feature sounds, it's the right design decision.
Dynamic settings support the future goals of Forscape, and should be implemented well here.