Tag: lisp

将一些LISP转换为C#

我正在阅读保罗格雷厄姆的垃圾邮件计划,并希望更好地理解它,但我的LISP真的很生疏。 他有一段代码可以计算概率: (let ((g (* 2 (or (gethash word good) 0))) (b (or (gethash word bad) 0))) (unless (< (+ gb) 5) (max .01 (min .99 (float (/ (min 1 (/ b nbad)) (+ (min 1 (/ g ngood)) (min 1 (/ b nbad))))))))) 我的问题有两个:(1)是否存在将LISP转换为其他语言的Web资源? (我的偏好是基于C的语言)或失败(2)有人可以为我重写C#中的代码片段吗?

c#中的Universal Func 类型

我正在用C#编写一个小的Lisp解释器,它基本上已经工作了。 目前我正在使用一个接口来表示函数: public interface LispFunction { object Apply(ArrayList parameters); } 接口由内部(标准)函数,lambdas,宏扩展,通过reflection调用.net对象中的方法等多个类实现。 请注意,速度在这里不是问题,只是让翻译工作的乐趣,并在工作中使用它。 现在我想让我的小Lisp接受在解释器中使用的任意C#lambdas,如下所示: Lisp foo = new Lisp(); foo.GlobalEnvironment.AddFunction(“test”, (bool a, int b) => a ? b : “whoops”); foo.Eval(foo.Read(“(test #t 5)”)); // Should evaluate to (object) 5 我想到的第一件事就是使用Func ,但我必须使用大量的重载方法来实现Func , Func , Func等等上。 C#中是否有可能接受随后通过reflection调用的任意lambdas?

在C#中使用Lisp

正如很多人在这个问题中指出的那样,Lisp主要用作学习经验。 不过,如果我能以某种方式使用我的Lisp算法并将它们与我的C#程序结合起来,那将会很棒。 在大学里,我的教授从来没有告诉我如何在程序中使用我的Lisp例程(不,不是在Lisp中编写GUI,谢谢)。 那我该怎么办?