Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- iOS프로그래밍
- 문법
- POP
- OOP
- DesignPattern
- CleanCode
- Solid
- 의존성
- 클린코드
- 디자인패턴
- 객체지향프로그래밍
- interface
- 함수형프로그래밍
- 협업
- IOS
- 인터페이스
- 의도
- 클린소프트웨어
- Swfit
- 네이밍
- 부스트코스
- 이름
- protocol
- 아이폰프로그래밍
- SWIFT
- 고차함수
- 함수형패러다임
- 개발
- 개발자
- fp
Archives
- Today
- Total
밤에 쓴 코드
FP) Higher Order Function - 고차함수 본문
Higher Order Function
1급객체로써의 함수
Swift 와 같은 함수형 프로그래밍 언어에서는 함수는 1급 객체 입니다 .
1급 객체는 이러한 특징을 가집니다.
- 함수의 인수의 역할을 할 수 있습니다.
- 함수의 반환형타입으로 지정할 수 있습니다.
이 두가지 를 보여줄 수 있는 예
함수의 합성을 보여드리겠습니다.
func composition<A,B,C>(_ f1:(A) -> B , _ f2:(B) -> C ) -> (A) -> C {
return {
input in
return f2(f1(input))
}
}
제네릭과 1급객체 함수로서의 특징을 적용한 예입니다.
함수의 꼬리 물기를 통해서 두개의 함수를 하나의 합수로 합성했습니다.
f1
이라는 함수는 A
타입을 입력 받아서 B
타입을 반환합니다.
f2
이라는 함수는 B
타입을 입력 받아서 C
타입을 반환합니다.
f1
의 output
은 f2
의 input
과 일치합니다.
f2(f1(input))
이렇게 함수의 꼬리물기가 가능해집니다.
이를 통해서 합수를 합성하는 것 또한 가능해집니다.
고차함수
let array = [0,1,2,3,4,5,6,7,8,9]
filter: 순차 작업과 동시에 , 요소를 걸러 낸다. 인수로는 (T)->Bool 형태의 클로저를 인수로 받는다.
array.filter{ $0 % 2 == 0 } // [0,2,4,6,8]
map: 순차 작업과 동시에 , 요소에 특정 연산을 수행한 후 결과값으로 이루어진 콜렉션을 반환합니다.
array.map{ $0*2 } // [0,2,4,6,8,10,12,14,16,18]
reduce: 순차 작업과 동시에 연산을 수행한 결과와 다음 요소와 연산을 수행하고 그 결과값을 또 다음요소와 연산하여 최종적으로 하나의 값을 반환합니다.
array.reduce(0,{$0+$1}) //45
'FP' 카테고리의 다른 글
FP) Currying - 커링 (0) | 2019.05.13 |
---|---|
FP) Pure Function - 순수함수 (0) | 2019.05.10 |
FP ) Functional Programming Paradigm - 함수 중심 프로그래밍 패러다임 (0) | 2019.05.10 |
Comments