Библиотека функционального программирования для Objective-C

Есть ли библиотека функционального программирования для Objective-C?

Ответы

Ответ 1

Вы можете попробовать FunctionalKit

FunctionalKit - попытка использовать функциональные парадигмы в Objective-C. Это набор низкоуровневых функциональных типов и API. Он содержит такие типы, как опция, и т.д., Которые позволяют писать правильный, чистый, плотный, сжатый и (если возможно) код типа. Он также предоставляет более продвинутые концепции, такие как функции подъема в монады.

FunctionalKit

Ответ 2

Вы также можете попробовать OCTotallyLazy, порт библиотеки Java TotallyLazy.

Например, сопоставление 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)

Он также предоставляет свой собственный тип коллекции, Sequence, который лениво оценивает карты, фильтры и т.д.

Ответ 3

Objective-C не является функциональным языком программирования (это довольно ясно процедурный OO), поэтому я не вижу, как это будет. Если вы ищете поддержку lambdas и concurrency, то, что для Grand Central Dispatch в 10.6.

Ответ 4

Вы можете использовать Functional.m для функционального программирования в Objective-C. Он интенсивно использует блоки и содержит ваши обычные подозрения в функциональном программировании, такие как карта, сокращение, фильтрация, отклонение и т.д.

Ответ 5

Я большой поклонник underscore.m.