Кто-нибудь знает действительно декларативный язык? Мне нужно поведение, похожее на то, что делает 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. Это правильно с точки зрения императива, но я ищу более упрямое поведение, если вы понимаете, о чем я.
И это просто очень простой расчет. Когда все становится сложнее, он должен автоматически обрабатывать такие вещи, как рекурсия и запоминание.
Приведенный ниже код, очевидно, будет работать на C #, но это просто так много кода для работы, я ищу что-то более конкретное без всего этого "технического шума"
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), которое делает это? Возможно, я не делаю это правильно в упомянутых языках или я полностью пропустил приложение, которое делает именно это.
Я создал прототип языка / приложения, который делает это (наряду с некоторыми другими вещами), и думаю о его создании. Я просто не могу поверить, что это еще не там. Не хочу тратить мое время.