JohnDTill / Forscape

Scientific computing language
MIT License
176 stars 3 forks source link

Dynamic settings #119

Closed JohnDTill closed 1 year ago

JohnDTill commented 1 year ago

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.