일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Swfit
- 부스트코스
- 이름
- 객체지향프로그래밍
- 고차함수
- 네이밍
- 의존성
- 함수형패러다임
- SWIFT
- OOP
- 클린코드
- interface
- 개발
- iOS프로그래밍
- 개발자
- 협업
- CleanCode
- 클린소프트웨어
- fp
- 의도
- 문법
- Solid
- DesignPattern
- 디자인패턴
- 아이폰프로그래밍
- 함수형프로그래밍
- protocol
- IOS
- 인터페이스
- POP
- Today
- Total
목록FP (4)
밤에 쓴 코드
FP) Currying - 커링 여러개의 인수를 받는 함수를 하나의 인수를 받는 여러 함수로 쪼개는 작업을 커링 이라고 합니다. 커링이 왜 필요할까요 ? ㅡ ? 함수의 꼬리물기(함수의 합성)를 할때 , 특정함수A의 output을 특정함수B의 Input 으로 넣어서 함수가 꼬리에 꼬리를 물어 결과값을 도출하는 프로그래밍을 할 수 있습니다. 이렇게 함수를 합성할 때에 쉽게 함수의 합성을 이루어 내기 위해서는 함수의 인자가 하나이면 함수의 합성이 원활하게 이루어 질수 있습니다. func multifly(_ n1: Int,_ n2: Int) -> Int { return n1*n2 } 인수를 하나만 받는 함수로 줄여보겠습니다. func multifly(_ n1: Int) -> (Int) -> Int { func ..
Higher Order Function 1급객체로써의 함수 Swift 와 같은 함수형 프로그래밍 언어에서는 함수는 1급 객체 입니다 . 1급 객체는 이러한 특징을 가집니다. 함수의 인수의 역할을 할 수 있습니다. 함수의 반환형타입으로 지정할 수 있습니다. 이 두가지 를 보여줄 수 있는 예 함수의 합성을 보여드리겠습니다. func composition(_ f1:(A) -> B , _ f2:(B) -> C ) -> (A) -> C { return { input in return f2(f1(input)) } } 제네릭과 1급객체 함수로서의 특징을 적용한 예입니다. 함수의 꼬리 물기를 통해서 두개의 함수를 하나의 합수로 합성했습니다. f1이라는 함수는 A타입을 입력 받아서 B타입을 반환합니다. f2이라는 함수는..
Pure Function 함수형 프로그래밍에서의 함수는 기존의 함수와 메서드와는 구분하기 위해서 순수함수라는 표현을 사용합니다. 순수함수는 '특정 input에 대해서 항상 동일한 output을 반환하는 함수'를 의미합니다. 순수함수는 부수효과(side-effect) 가 존재 하지 않습니다. 부수효과가 존재한다는 것은 함수가 내부에서 일처리를 함에 다른 추가적인 효과들이 발생하는 것입니다. var sum = 0 func add(numbers:[Int]){ return numbers.reduce(sum,number) } 위의 예 와 같이 add라는 함수는 sum이라는 외부의 값을 사용하는 경우도 부수효과가 발생합니다. 함수에 동일한 입력을 넣는다고 해도 , 참조하는 외부의 값이 다를 경우 , ..
함수 중심 프로그래밍 패러다임 패러다임 시대별 사람들의 인식체계입니다, 시대별로 고민하는 문제에 따라서 패러다임은 변해갑니다. OOP 1990 년대 프로그래밍을 하는데에 있어서 많은 개발자들이 고민을 했던 것은 , 데이터를 어떻게 재사용을 할 수있을까 ? 어떻게 변화에 대응할 수 있을까 ? 데이터를 추상화하여 변화에 대응을 하고 , 그 과정에서 OOP 라는 객체 중심의 프로그래밍 패러다임이 발생하게 됩니다. FP 현대 사회에 와서 더 발전된 하드웨어를 가진 컴퓨터들이 나타나게 됩니다. 하나의 프로세스의 작업을 여러 코어로 나눠서 병렬 처리를 하고 , 또 , 여러 프로세스는 동시 처리 되어야 하고 , 개별적으로 수행된 결과를 모아서 다음 작업을 수행하기를 요구하게 됩니다. 그 과정에서 데이터에 동시접근은 ..