기본 콘텐츠로 건너뛰기

라벨이 함자인 게시물 표시

Functor?

  Functor가 무엇일까? Array가 Functor라는 말은 들어보았을 것이다. 뭐 다들 그러니 Functor가 맞을 것이다. 그러면 Array는 왜 Functor이고 Functor라고 말할 수 있는 최소 조건은 무엇일까? 한 번 확인해보자.  Functor  Functor는 데이터 타입이다. 뭐 Array도 데이터 타입이니 놀랄 내용도 아니다. Functor는 어떤 값을 가지고 있는 컨테이너 성격의 데이터 타입이며, 해당 값에 함수를 적용 할 수 있어야 한다. 우리가 Array안에 있는 값을 map으로 특정 함수를 적용 시키는 것과 마찬가지라고 보면 된다.  자주 들어보았을 법한 내용으로 map을 가지고 있는 객체라면, 펑터라고 보아도 된다고 많이 들었을 것이다. map이 무엇을 뜻하는 걸까? 간단하게 Array에서의 map은 내부의 값들을 순회하며, 함수를 적용하고 출력을 해주는 함수이다.  간단한 내용을 언급하자면, 내부의 값은 Functor아 아니다. 일반적으로 [1, 2, 3, 4], [true, true, false, true] 등등 원시 값들을 순회 한다고 쳐보자. 당연학게도, 숫자나 진위 값들이 map을 지원 할 리 없으니 Functor가 아니다.  ( 뭐 물론, 2차원 이상의 배열을 순회시 내부의 값은 배열들 일테니, Functor겠지만, 일반적인 상황을 따지자.)  뭐 간단하게 Functor가 무엇인지, 아직까지는 감이 안 올 수 있다. 감이 오는게 이상 할 것이겠지만....  Functor는 왜 어려울까? 어려운 거니까 어렵다.  Functor(함자)  뭐 물론 Array는 Functor이다. 이런식의 설명만 하고 마친다면 꽤나 쉬울 만한 내용일 것이다. 하지만 조금만 더 들어가보자.  함자를 설명하기 위해서는 범주론 을 간략하게나마 설명 하고자 한다. 뭐 물론 내 설명에 틀린 내용도 있을 수 있...