업자를 위한 아주 인포멀한 모나드 설명
함수형 프로그래머한테 닉스 패키지 매니저의 derivation 소개하는 글
함수를 값에 적용하는 작업을 함수, 값으로만 나누는 게 아니라, 적용도 따로 분리한다.함수, 값, "적용"주인공 같은 함수, 값에 가려 조연 같던 "적용"을 주연으로 끌어 올려 다양한 구현과 일반화를 시도하다 보면 Applicatives, 모나드, Arrow 다 튀어 나온다.
1. 로직을, 쪼개 놓은 작업들의 조합Combination으로 설계하여 프로그램을 만드는데, 이런 프로그램의 구성 요소로 쓰일 수 있도록 해주는 함수들을 Combinator라 부른다.
2. 프리 변수가 없는 람다 함수를 Combinator라 부른다.
"두 가지" 뜻을 구분해서 말하기도 하는데, 생각해보면 둘이 같은 의미를 가지고 있다. 프리변수가 없어야 이런 저런 조합에 쓰일 수 있다.
#함수형
함수형 입문 텍스트들에 빠짐 없이 보이는, 예시로 리스트 필터 매핑을 보여줍니다. 필터를 다른 곳에 "구현"해 놓고, 필터 이름만 가져다 쓰는 걸로 선언형이다란 설명을 하고 휘릭 넘어갑니다. 근데, 함수 구현해놓고, 함수 이름만 호출하는 것과 무엇이 다른지 콕 찝지 않는 경우가 많습니다.
map filter [1,2,3] 에서 중요한 부분은, 계속 적용할 필터가 있으면,
map filter1 [1,2,3] 한 후
map filter2 result1하고,
map filter3 result2 하는 것이 아니라,
map (filter1 filter2 filter3) [1,2,3]으로 표현할 수 있음이 중요합니다.
이 것까지 얘기해주는 게 더 좋지 않을까 합니다.
#함수형
몇 일 전 올렸던 프리모나드 글에 이어지는, 아주 아주 간단한 DSL 예시 올렸습니다.
https://lionhairdino.github.io/posts/2024-12-22-freeMonadDSL.html
#하스켈 #Free모나드 #모나드 #함수형