Articles of functional programming

Buscar una jerarquía UIView usando Swift funcional

He escrito una function que itera a través de las superventas de una UIView dada para get una reference a una subclass UIView específica si está presente (en este caso, UITableView). Esto funciona bien utilizando un estilo imperativo, pero parece ser un problema que se prestaría muy bien a la "Progtwigción orientada a los ferrocarriles". […]

¿Cuál es la diferencia entre RACSequence y RACSignal?

Tal vez me falta totalmente esto, pero según la documentation sobre ReactiveCocoa en sus types , RACSequences son señales. Sin embargo. Veo ejemplos donde tiene un código como este: RACSignal *letters = [@"ABCDEFGHI" componentsSeparatedByString:@" "].rac_sequence.signal; // Outputs: ABCDEFGHI [letters subscribeNext:^(NSString *x) { NSLog(@"%@", x); }]; Y también RACSequence *letters = [@"ABCDEFGHI" componentsSeparatedByString:@" "].rac_sequence; // Contains: […]

transductores y swift porting código javascript para código swift

Estoy intentando practicar la escritura de transductores de manera rápida, pero no puedo traducir con éxito este código JavaScript funcional a Swift. http://phuu.net/2014/08/31/csp-and-transducers.html function mapping(transform) { return function (networkinguce) { return function (result, input) { return networkinguce(result, transform(input)); }; }; } func mapping<T,U> ( transform:(T)-> T ) -> ( (U,T)-> ( (U,T)->U ) ) { […]

Cierres syntax abreviada en Swift 3

¿Cuál es la diferencia desde la perspectiva del comstackdor entre las expresiones 1 y 2 (ver el fragment de código a continuación)? Si desde Swift 3 ya no es posible pasar múltiples parameters a las funciones en forma de una tupla, entonces, ¿cómo sigue funcionando la primera expresión? func f(_ x: Int, _ y: Int) […]

Convierta una matriz anidada de cadenas en una matriz anidada de dobles utilizando la functional programming.

Me gustaría convertir una matriz anidada de cadenas en una matriz anidada de dobles. ejemplo: let Strings = [["1.1", "1.2"],["2.1", "2.2"]] a let Doubles = [[1.1, 1.2],[2.1, 2.2]] Lo intenté let Doubles = Strings.flatMap(){$0}.flatMap(){Double($0)} pero en este caso obtengo una matriz de valores dobles, ¿cómo mantener anidada esta matriz? EDITAR: ¿Podrías también explicar por qué […]

RxSwift filter Variable array

Hola, estoy tratando de comprender la biblioteca RxSwift para escribir mejor el código funcional. Actualmente estoy atrapado en un problema muy básico. Digamos que obtuve estas variables de tipo Variable<[CiteModel?]> : var allCites: Variable<[CiteModel?]> = Variable([]) var shownCites: Variable<[CiteModel?]> = Variable([]) Ahora quiero filtrar todas las citas de la matriz allCites que contienen un text […]

¿Cómo escribir una function genérica apply () en Swift?

¿Hay alguna forma de hacer funcionar lo siguiente en Swift 3? let button = UIButton().apply { $0.setImage(UIImage(named: "UserLocation"), for: .normal) $0.addTarget(self, action: #selector(focusUserLocation), for: .touchUpInside) $0.translatesAutoresizingMaskIntoConstraints = false $0.backgroundColor = UIColor.black.withAlphaComponent(0.5) $0.layer.cornerRadius = 5 } La apply<T> debe tener un cierre del tipo (T)->Void , ejecutarlo en él y, a continuación, simplemente volver self . […]

¿Qué significa que RACStream representa una mónada?

¿Desde el documento RACStream representa una "Mónada"? ¿Alguien podría explicar lo que esto significa específicamente en el context de RACStream? Miré el significado funcional en wiki pero estoy teniendo dificultades para ver cómo beneficia a Reactivo-Cacao y por qué se eligió este patrón.

Enlace de dos vías en RxSwift

Leí el operador binding de dos vías en el código de ejemplo de RxSwift. func <-> <T>(property: ControlProperty<T>, variable: Variable<T>) -> Disposable { let bindToUIDisposable = variable.asObservable() .bindTo(property) let bindToVariable = property .subscribe(onNext: { n in variable.value = n }, onCompleted: { bindToUIDisposable.dispose() }) return StableCompositeDisposable.create(bindToUIDisposable, bindToVariable) } Cuando la property cambió, notificará la variable […]

¿Cuándo deberíamos llamar a addDisposableTo (disposeBag) en RxSwift?

Creamos un DisposeBag y un Observable , suscribimos el Observable y luego addDisposableTo(disposeBag) , sé cuándo el DisposeBag va a desiniciar, llamará a dispose() para liberar resources, de lo contrario, ocasionará una pérdida de memory. Si el Observable envía Complete o Error que finaliza en un time limitado. Cuando el Observable termina antes de que […]