티스토리 뷰

Functor, Applicative, Monad.

 

  함수형 패러다임에서 매우 잦게 수행되는 것들이 있다고 합니다. 함수 합성과 커링이 그 예 입니다.

 여기서 일반적으로 사용되는 데이터 타입인 Char, Int, Double 을 그대로 사용하면서도 Null 동작에 대한 대비 및 Side-Effect 를 동반하는 함수를 순수하게 다루기 위한 방법 등이 같이 고려되어야 합니다.

 

 그 중 알아낸 개념으로 Functor, Applicative, Monad 에 대해 약술합니다.

 

 Functor(함자)

  맵핑 가능하거나 맵핑 되는 대상

  조건

   1. id 함수(identity function; 항등 함수)를 함자를 통해 맵핑하여 리턴된 함자는 원래의 함자와 동일해야 한다. fmap id = id

   2. 두 함수를 합성한 함수를 함자를 통해 맵핑하여 얻은 결과는 첫 함수를 먼저 함자에 맵핑하고 이 결과를 다른 함수와 함자에 맵핑한 결과와 같아야 한다. fmap (f . g) = fmap f . fmap g.

 

 Applicative(적용성 함자)

  함수와 그 정의역을 받아 함수에 정의역을 적용한 결과값을 리턴하는 함수

  조건

    1. 문맥상의 값과 문맥상의 항등함수를 적용성 함자에 적용하면 그 결과는 문맥상의 값이다. (Identity law) pure id <*> v = v

    2. 적용성 함자 적용에 결합법칙이 성립해야 한다. (Composition law) pure (.) <*> u <*> v <*> w = u <*> ( v <*> w )

    3. 문맥상의 함수와 문맥상의 값을 적용성 함자를 통해 적용한 결과는 함수에 값을 적용해 얻은 값이 문맥에 포함된 결과와 같아야 한다. (Homomorphism law) pure f <*> pure x = pure ( f x )

    4. 적용성 함자를 문맥상의 값에 적용한 결과는 문맥상의 값을 인자로 받는 함수에 적용성 함자를 적용한 결과와 같아야 한다. (Interchange law) u <*> pure y = pure (& y) <*> u

 

  Monad(모나드)

   단항 제네릭 타입의 모노이드

   조건

     1. Left identity : 모노딕 값을 함수에 바인딩한 결과는 함수에 값을 적용한 결과와 같다.  return x >>= f  equals  f x

     2. Right Idnentity : 모노딕 값을 모노딕화 함수에 적용한 결과는 그저 모노딕 값과 같다. m >>= return equals m

     3. Associativity : 모나딕 값을 함수 f 에 바인딩 한 결과를 함수 g 에 바인딩 한 결과는 함수 f를 함수 g에 바인딩 한 결과에 모노딕 값을 적용한 결과와 같다. (m >>= f) >>= g equals m >>= (\x -> f x >>= g)

 

발표에 쓸 자료

    1.

Functor_Applicative_monad.pptx
0.92MB

 

Functor_Applicative_monad.pdf
1.81MB

 

참고자료

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/02   »
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
글 보관함