1

我正在 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-ZH-中找到了一个实现22.html#%_idx_3516,但我不确定是否有一种干净的方法可以从Objective C调用LISP程序。我正在寻找可以为求解器提供Objective C接口的东西,或者编译LISP编程到Objective C库中。否则,一个极简的开源约束求解器将满足我的需求。

4

4 回答 4

1

那本书的例子是用Lisp 的一种方言Scheme编写的(有很多)。这本书有点老了,但是今天的大多数 Scheme 实现都能够执行那本书中的代码示例。有几个在 OSX 上运行的 Scheme 实现,但是书中的示例也可以很容易地移植到 Common Lisp 中——实际上只有很小的区别。不仅如此,我认为用 C/Obj-C 编写它们不会花费太多时间。书中的示例是通用编程,它们使用的 Lisp 方言并没有什么特别之处。

(Wiki 中的文章也有实现的链接,我不想宣传任何特定的实现不要听起来有偏见——此外,我在学术界之外没有太多使用它的经验)。

可能,如果您正在寻找一种通用工具来证明数学定理,那么您可以研究Coq——这是专门用于该任务的语言。它还可以在任何 Unix 或类 Unix 操作系统上运行。

于 2012-04-30T18:38:43.270 回答
1

实际上有人为 iOS 构建 lisp 系统。(免责声明 - 我一生中从未使用过 lisp)

这个 SO 问题common-lisp-on-iphone-ios指向funcall 博客,其作者在 github 上有ecl-iphone-builder

这个 SO 问题:has-anyone-got-any-code-examples-of-ecl-lisp-for-iphone-development最终在同一个目的地。

希望这对你来说是一个好的开始。

编辑

我完全错过了这不是iOS 问题。

但是有人在 OSX 上运行 lisp。这个 SO 问题有一些解决方案:what-is-the-best-scheme-or-lisp-implementation-for-os-x

这个博客:common-lisp-on-mac-os-x更加详细(对我来说是谷歌的顶级)

于 2012-04-30T12:12:18.050 回答
0

nu 编程语言是一种 Lisp 方言,可以与 Objective-C 集成,包括嵌入到 Objective-C 应用程序中。 http://programming.nu/index

我听说过关于它的非常好的事情,但从未使用过它。

您也可以尝试将约束求解器应用程序转换为 Objective-C。

于 2012-05-01T01:17:55.497 回答
0

如果这是您需要解决的唯一问题,那就更容易了。您可以b根据A和解决a

b = A / a

然后你可以P使用你发布的第一个方程找到。

于 2012-04-30T10:31:15.900 回答