It would also open a lot of doors to other backends like accelerate or GLSL, where symbolic objects could be represented as, well.. symbolic functions.
Also an analytical simplification step could be implemented before actual discretization and evaluation which could drastically improve performance for some cases.
We can turn
circle :: ℝ -> SymbolicObj2
into e.g.circle :: Num a => a -> SymbolicObj2 a
.That would allow us to use different numerical types instead of being fixed on
Doubles
. Some fun examples includeInteger
CReal
from https://hackage.haskell.org/package/exact-realSym
from https://hackage.haskell.org/package/numbers-3000.2.0.2/docs/Data-Number-Symbolic.htmlℝ
from https://github.com/Haskell-Things/ImplicitCAD/pull/225units
ordimensional
)It would also open a lot of doors to other backends like
accelerate
orGLSL
, where symbolic objects could be represented as, well.. symbolic functions.Also an analytical simplification step could be implemented before actual discretization and evaluation which could drastically improve performance for some cases.