面向Objective-C的函数式编程库

面向Objective-C的函数式编程库,objective-c,functional-programming,Objective C,Functional Programming,Objective-C有函数式编程库吗?Objective-C不是一种函数式编程语言(它显然是过程式OO),所以我不知道怎么会有这样的东西。如果您正在寻找lambda和并发支持,这就是Grand Central Dispatch在10.6中的用途。您可以尝试FunctionalKit FunctionalKit试图在Objective-C中使用函数范式。它是一组低级函数类型和API。它包含诸如任选一、选项等类型,允许您编写正确、干净、紧凑、简洁和(在可能的情况下)类型安全的代码。它还提供了更高级

Objective-C有函数式编程库吗?

Objective-C不是一种函数式编程语言(它显然是过程式OO),所以我不知道怎么会有这样的东西。如果您正在寻找lambda和并发支持,这就是Grand Central Dispatch在10.6中的用途。

您可以尝试FunctionalKit

FunctionalKit试图在Objective-C中使用函数范式。它是一组低级函数类型和API。它包含诸如任选一、选项等类型,允许您编写正确、干净、紧凑、简洁和(在可能的情况下)类型安全的代码。它还提供了更高级的概念,例如将函数提升到monad中

您可以使用Objective-C进行函数式编程。它大量使用块,并包含常见的函数式编程疑点,如map、reduce、filter、reject等。

您也可以试用Java库的一个端口

例如,映射NSArray的操作如下:

[array(@"one", @"two", @"three", nil) map:^(NSString *item){
  return [item uppercaseString];
}];

// Returns array(@"ONE", @"TWO", @"THREE", nil)
还有一组宏允许使用较短的语法,例如:

#define TL_LAMBDA_SHORTHAND
[array(@"one", @"two", @"three", nil) map:_([_ uppercaseString])];

// Returns array(@"ONE", @"TWO", @"THREE", nil)

它还提供了自己的集合类型、序列,它可以懒洋洋地计算映射、过滤器等。

我非常喜欢。

伪函数,如果您喜欢。。。我在寻找一些符合Java精神的东西。我认为这是一种恭维,因为我得到的唯一的反对票没有附带评论。吹毛求疵:Lambdas不是GCD的结果;它们是您如何使用GCD的一部分。顺便说一句,看看它。可以用Objective-C编写干净的、主要是函数式的和类型安全的代码。函数式编程不需要用“函数式编程语言”来完成。关于引用透明性的编程,尽可能避免副作用只是一个可以用来简化任何语言编程的原则。更极端的情况是没有函数式编程语言,只有更好地支持函数抽象的语言。看起来这实际上使函数式编程比我在回答中提到的10.6中的内置lambdas和相关方法更难。试试FunctionalKit的Blocks分支。我还编写了一个系统,可以在运行时自动将任何操作包装成选项类型,我很快就会发布这个系统。Blocks和runtime badassery使FunctionalKit成为一个非常有用的工具,我在最近的两个iPhone应用程序中广泛使用了它。下面是关于如何使用Functionalzy的指南: