Кто-нибудь знает действительно декларативный язык? Поведение, которое я ищу, - это то, что делает Excel, где я могу определить переменные и формулы, и изменить результат формулы при изменении ввода (не задав ответ снова сам)
Поведение, которое я ищу, лучше всего показать с помощью этого псевдокода:
X = 10 // define and assign two variables
Y = 20;
Z = X + Y // declare a formula that uses these two variables
X = 50 // change one of the input variables
?Z // asking for Z should now give 70 (50 + 20)
Я пробовал это на многих языках, таких как F #, python, matlab и т.д., но каждый раз, когда я пытаюсь это сделать, они придумывают 30 вместо 70. Это верно с императивной точки зрения, но я ища более децилераторное поведение, если вы знаете, что я имею в виду.
И это просто очень простой расчет. Когда все становится сложнее, он должен автоматически обрабатывать такие вещи, как рекурсия и мемонирование.
Нижеприведенный код, очевидно, будет работать на С#, но это всего лишь код для задания, я ищу что-то немного больше, не говоря уже о том, что "технический шум"
class BlaBla{
public int X {get;set;} // this used to be even worse before 3.0
public int Y {get;set;}
public int Z {get{return X + Y;}}
}
static void main(){
BlaBla bla = new BlaBla();
bla.X = 10;
bla.Y = 20;
// can't define anything here
bla.X = 50; // bit pointless here but I'll do it anyway.
Console.Writeline(bla.Z);// 70, hurray!
}
Это похоже на столько кода, фигурных скобок и точек с запятой, которые ничего не добавляют.
Есть ли язык/приложение (кроме Exel), которое это делает? Возможно, я не делаю это правильно в упомянутых langauges, или я полностью пропустил приложение, которое делает именно это.
Я прототипировал язык/приложение, которое делает это (наряду с некоторыми другими вещами), и я думаю о его выпуске. Я просто не могу поверить, что это еще не все. Не хочу тратить свое время.