Hot on the heels of the last post, I’ve decided say a bit more about CMFunctionalAdditions. As I mentioned last time the project is the result of functional and syntatic-sugar widthdrawl symptoms. In a nutshell, CMFunctionalAdditions is my take on being able to call the following in Objective-C without altering the receiver:
- Map with index (each_with_index.map…)
- Reduce (inject, fold, whatever)
- Filter (select)
- Remove (reject, delete, whatever)
- Partition (the ruby flavour, not the clojure flavour)
- Take (take_while)
Additionally many of the linear-time methods above run in O(n ∕ P) time or better with Grand Central Dispatch. I want concurrency to be transparent to the end user wherever possible. A picture speaks a thousand words so to rip the examples from the CLI demo…
The framework currently requires Snow Leopard or better but Lion might become a prerequisite (see last post). iOS 4 should work but I haven’t tried it. I’m also attempting compilation on Linux as this is being written. As the only dependencies are Foundation and libdispatch (compiled with llvm) it’d be a nice bonus.
Proper documentation is in the pipeline. Any feedback would be appreciated.