我正在Mac OS X 10.7上编写Objective C应用程序,我需要解决算术约束的问题。 例如,我有两个矩形方程,a和b是边长:
P=2(a+b) (perimeter)
A=ab (area)
我将此问题确定为约束满足问题。 用户应该能够指定a和A,并使解算器计算b和P. 我在http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-22.html#%_idx_3516找到了这个实现,但是我不确定是否有一种干净的方法可以从Objective C调用LISP程序。我正在寻找能够为我提供Objective C接口的东西。求解器,或者可以将LISP程序编译成Objective C库。否则,极简主义的开源约束求解器将满足我的需求。
答案 0 :(得分:1)
实际上有人在为iOS构建lisp系统。 (免责声明 - 我一生中从未使用过lisp)
这个问题common-lisp-on-iphone-ios指向the funcall blog,其作者在github上有ecl-iphone-builder
这个问题:has-anyone-got-any-code-examples-of-ecl-lisp-for-iphone-development最终在同一个目的地。
希望这对你来说是一个好的开始。
修改强>
我完全错过了不 iOS问题。
但是有人在OSX上运行lisp。这个问题有一些解决方案:what-is-the-best-scheme-or-lisp-implementation-for-os-x
这篇博客:common-lisp-on-mac-os-x更加精彩(对我来说是google的顶端)
答案 1 :(得分:1)
那本书的例子是用Scheme写的,这是Lisp的一种方言(有许多)。这本书有些陈旧,但今天Scheme的大多数实现都能够执行该书中的代码示例。在OSX上运行了一些Scheme的实现,但本书中的示例也很容易移植到Common Lisp - 实际上只有很小的区别。更重要的是,我不认为用C / Obj-C写它们需要那么多时间。本书中的例子是通用编程,对于他们使用的Lisp方言来说并不是特别的。
(Wiki中的文章也有实现的链接,我不想宣传任何特定的一个,以免听起来有偏见 - 此外,我没有太多经验在学术界之外使用它。)
或许,如果您正在寻找用于证明数学定理的通用工具,那么您可以查看Coq - 这是专门针对任务的语言。它也可以在任何Unix或类Unix操作系统上运行。
答案 2 :(得分:0)
如果这是你需要解决的唯一问题,那就更容易了。您可以使用b
和A
:
a
b = A / a
然后,您可以使用您发布的第一个等式找到P
。
答案 3 :(得分:0)
nu编程语言是一种可以与Objective-C集成的Lisp方言,包括嵌入在Objective-C应用程序中。 http://programming.nu/index
我听说过非常好的事情,但从未使用它。
您也可以尝试将该约束求解器应用程序转换为Objective-C。