小编Bob*_*ite的帖子

我如何真正使用NSNumbers进行数学运算?(在obj-c中实现lisp)

灵感来自Clojure和Peter Norvig

我一直在努力在obj-c中实现一个简单的Lisp.我有许多基础知识(包括一些类似于Clojure的酷可可集成),并希望继续算术.

关于我到目前为止如何实现这一点的一些背景:我使用的是一个小类"Scope",它只是一个用于本地变量的NSMutableDictionary,带有指向父"Scope"的指针.(AKA,我只能存储物品.)

我使用以下规则解析数字:像2或2.7这样的普通数字被转换为[NSNumber numberWithIneger:][NSNumber numberWithDouble:].但是对于可可集成,您还可以执行2i或4U之类的操作来创建具有特定标量类型的NSNumber.(我还创建了一个围绕NSObject的类别,并创建了一个新的方法performSelector:withObjects:,巧妙地将args取消装箱,并且盒子备份返回类型以实际使其有用)

我有一个特殊的形式,看起来像:(static Math add: 1 2 3 4),它会变成一个obj-c方法调用,看起来像:[Math add:args]

鉴于这一切,我向大家提出的问题是:实施"add:"方法的好方法是什么?

我希望做类似的事情我怎么相信Clojure的不(用做什么?)是,通过实施一堆类似的方法add:(int)x to:(long)y,add:(long)x to:(float)y等,等,通过所有可能的组合,并减少在的args列表成对将一切.但是当然,obj-c不支持这样的重写方法.除了限制我自己只添加NSIntegers和双打之外,我能做什么样的诡计才能得到我想要的地方?我真的不在乎它是否超级高效(不过,这总是一个优点!)

lisp objective-c

8
推荐指数
1
解决办法
1035
查看次数

标签 统计

lisp ×1

objective-c ×1