24건의 항목
Monad에 대한 것에 대해 탐구합니다.
Functor란 무엇인가? Functor Functor: 임의의 타입 T, U가 주어졌을 때, 연산 lift이 정의되는 01.
고차원 Lift에 대해 알아보자. (map) High Dimensional lift 앞에서 배운 lift은 기본적으로 1변수를 변환할 수 있는 함수이다.
Monad는 어떻게 정의할 수 있을까? Monad Monad: 다음의 연산들이 정의된 Functor unit: T -> M<T> (return in Haskell) flat: M<M<T>> -> M<T> (join in Haskell) Functor에 unit하고 flat추가한게 모나드다.
그래서 Monad를 왜 사용하는가? 왜 모나드가 유용한가? Improve High-Demensional lift Monad는 Functor의 불만족스러운 부분을 해소해준다. 앞에서 lift2d에 대해 배웠다.
그래서 Monad를 왜 사용하는가? 왜 차원확장 flatLift는 중요할까? 다변수를 받아 모나드를 반환하는 함수도 합성할 수 있다.
어떻게 Monad를 사용해야 하는가? 사용방법 Monad 함수를 직접적으로 사용한다. flatLift, flatLift2d 언어에서 제공하는 Monad 특화된 언어를 사용한다.
Monad에는 어떤 종류가 있는가? Monad란 개념에 대한 의미론적 확장에 대응되는 제네릭 타입.
Monad와 Functor 사이에는 Monoidal Functor라는 중간 단계가 있다. Monoidal Functor를 정의할 수 있는 언어 아무 언어에서나 정의될 수 있는 개념은 아니다. 다음의 조건이 선행되어야 한다.
함수형 언어가 다인수함수를 다루는 법.
수학에서의 범주론에 대해 알아보자. 왜 Monad는 이런 형태가 된 것인가? Monad, Category Theory Monad라는 단어는 프로그래밍에서 태동된 단어가 아니다. 수학에서의 범주론에서 유래된 단어이다.
범주론에서의 카테고리에 대해 알아보자. Category Theory 카테고리에 대한 이론 Category 요소와 요소의 관계까지를 포함한 집합같은 개념 Object와 Morphisms로 구성된다.
범주론에서의 카테고리에 대해 알아보자. 프로그래밍과 무슨 관계가 있는가? 왜 이런 메타수학에서 사용되는 개념이 프로그래밍에서 사용될까? 프로그래밍에서 공통적으로 나타내는 개념들 사이의 관계가 카테고리의 조건에 딱 들어맞는다. 모든 프로그래밍 언어에는 타입이 있다.
실제 Functor는 무엇을 의미하는가? Functor 카테고리 사이에서의 사상(morphisms) 동질의 대상들을 규정하면, 그 사이를 비교하거나 대응하기 위한 수단도 필요하다. 집합의 경우 집합 사이의 함수가 그것이다.
모나드(Monad)의 항등성(identity law)은 함수형 프로그래밍에서 모나드가 가져야 하는 중요한 특성 중 하나입니다. 모나드는 데이터 형식을 다루는 추상적인 개념으로, 값을 감싸거나 조작하는 데 사용됩니다.
OOP 다음으로 떠오르는 패러다임인 FP에 대해서 알아보자. 물론 FP는 OOP보다 먼저 등장했다. 그렇다면 갑자기 왜 등장하게 되었을까? FP의 장점과 개념을 이해하면서 알아가보자.
자주 사용하는 고차함수들에 대해서 이해해보자.map, flatMap과 같은 경우는 여러가지가 존재하는데, 각각의 활용 방법에 대해서 알아보자.
함수형 프로그래밍에 대해서 공부해보면 꼭 나오는 용어들이 있다. 일급 시민, 함수 합성, 커링 등. 오늘은 이러한 단어들에 대해서 이해해보자. First Class Function function은.
함수형 프로그래밍을 공부하다보면 벽을 한번 마주한다. Functor와 Monad가 그것이다. 이걸 이해하기 위해서 위키피디아에서 집합론?, 범주론? 이런 걸 읽었던 적이 있는 것 같은데 여전히 잘 모르겠다. 이번에는 와닿는 방식으로 이해하는 것을 목표로 한다.
순수 함수형 프로그래밍언어 Haskell에는 Either라는 자료구조가 있다. 둘 중 하나의 타입을 가질 수 있는 경우 사용하는 자료구조라 한다. 이 Either 자료구조에 영감을 얻어 태어난 것이 Swift의 Result라 한다.
lazy property를 사용해본 경험이 있다. 해당 아이디어는 함수형 프로그래밍 언어에서 주로 사용한다. 이번에는 지연 계산법이 무엇인지, 그리고 Lazy와 unfold sequence에 대해 알아본다.
소프트웨어의 혁신과 함수형 프로그래밍 소프트웨어를 통한 혁신은 왜 발생했는가? 인간의 추상적인 사고를 통해 발생한 아이디어를 컴퓨터의 극대화된 연산력을 통해 사용할 수 있게 되었기 때문. 이러한 시각은 크게 봐도 그렇고 개발자가 언어를 바라보든 작은 시각에서도 맞다.
오늘은 작업 중 내가 모르는 코드를 발견해서 글을 써본다. reduce! reduce(::) 형태만 봐왔었는데 reduce(into::) 형태도 있더라! 알아보자.
간단한? 설명 “자연성(naturality)“은 수학에서 함수나 변환자(transformer) 사이의 관계가 다른 수학적인 구조를 변형해도 변환의 특성을 유지하는 것을 의미합니다. 이러한 관계는 수학적인 구조 간에 일관성을 유지하며 변환을 적용할 수 있도록 해줍니다.