我一直在閱讀一些關於算法的lambda演算(不解析,只是在解析之後進行評估),但到目前爲止,它們看起來都是你用筆和紙做的一種方法。我想從頭開始用C#編寫我自己的lambda微積分評估器,並想知道實際的程序如何做到這一點。C#如何評估lambda表達式?
由於lambda表達式是lambda微積分的超集,我想知道lambda表達式的lambda微積分子集是如何評估的(不關心二進制操作或鑄造等)。
我已經有我的課,但我不知道應該怎麼去評估:
public enum TermType { Variable, Application, Abstraction };
public abstract class LambdaTerm
{
public readonly TermType TermType;
protected LambdaTerm(TermType termType)
{
TermType = termType;
}
}
public class LambdaVariable : LambdaTerm
{
public string Name;
public LambdaVariable() : base(TermType.Variable) { }
}
public class LambdaApplication : LambdaTerm
{
public LambdaTerm Function;
public LambdaTerm Parameter;
public LambdaApplication() : base(TermType.Application) { }
}
public class LambdaAbstraction : LambdaTerm
{
public string ArgumentName;
public LambdaTerm Body;
public LambdaAbstraction() : base(TermType.Abstraction) { }
}
你對這裏的答案有什麼期待? –
@AustinSalonen你是什麼意思?我的問題不是很清楚嗎?我至少大概知道用什麼樣的算法來評估lambda表達式。 – Juan
這個問題可能會在http://programmers.stackexchange.com/ – CDspace