Например, представете си функция като тази:
int solveSomeEquation(int y)
{
y = (int x) * 2;
return x;
}
Използвайки символна алгебра, компилаторът ще определи, че x = y / 2. Дори по-добре, ще се оплаче, че int не е достатъчно за съхраняване на резултата от y / 2. Представете си, че тази функционалност се разширява до решаване на ODE с ограничения и/или гранични условия, и интегриране с помощта на символни или числени методи (по време на изпълнение), където е необходимо. Аз например бих се радвал да видя нещо подобно:
int areaOfUnitSemiCircle()
{
auto semiCircleFunc = [](double x){ return abs((1 - x^2)^0.5); };
semiCircleFunc = (auto semiCircleIntegralFunc)'; // single quote means derivative
return semiCircleIntegralFunc(1) - semiCircleIntegralFunc(-1);
}
опростено до:
int areaOfUnitSemiCircle()
{
return Pi/2;
}
Освен това, той би могъл не само да опрости изрази локално във функция, но и да извърши оптимизация на цялата програма. Може да пренареди изрази, за да подобри числената стабилност (намали ефекта от грешката с плаваща запетая) или дори да ги елиминира изцяло, като използва различно представяне. BigInt, IEEE1394's float с четворна точност, набори, дефинирани от предикат, интегриране върху функции на части. Вероятно може да се направи много повече.
Такова нещо е възможно, нали? Знам, че можете да изпълнявате неща като тези, като използвате функциите на езика за програмиране на Mathematica или MatLab, но те се извикват ОТ изходния код. Искам да се приложи към изходния код от компилатора. (Тези езици имат ли такива неща? Не знам.) Обичам да използвам Mathematica на работа, когато имам извинение, но след това се озовавам с магически изглеждащи функции в C++, които нямат смисъл, без да се позовават на външен Тетрадка по математика. Бих искал да мога да бъда математик и програмист на един език, една среда. Съществува ли такова нещо?