펑터(기능 프로그래밍)

Functor (functional programming)

기능 프로그래밍에서 functor범주 이론의 정의에서 영감을 받은 디자인 패턴으로, 일반 유형의 구조를 변경하지 않고 내부에 기능을 적용할 수 있도록 한다.

이 아이디어는 유형 클래스를 사용하여 Haskell로 암호화된다.

계급 펑터 f 어디에   fmap :: (a -> b) -> f a -> f b 

functor laws라고 불리는 조건들을 가지고,

fmap id = id fmap (g . h) = (fmap g) . (fmap h) 

스칼라에서는 고품종 유형이 사용된다.

특성 펑터[F[_]] {   반항하다 지도를 그리다[A,B](a: F[A])(f: A => B): F[B] } 

이것의 간단한 예는 옵션과 컬렉션 유형이다.펑커스는 아직 완료되지 않은 계산에 함수를 적용하기 위해 기능 효과를 모델링하는 데 매우 유용하다.

Functors는 Applicative, Monad, Comonad와 같이 더 복잡한 추상화의 기초를 형성한다.

C++에서 functor라는 이름은 이 정의 대신 함수 객체를 가리킨다.

외부 링크