Monad에 대한 것에 대해 탐구합니다.
Monad에 대한 것에 대해 탐구합니다.
15 items under this folder.
Type Constructor 새로운 데이터 타입을 만드는 틀. A라는 진짜 데이터가 있을 때, 이 값을 유지하면서 감쌀 수 있는 논리적 구조. 감싼다는 측면에서 바라보았을 때 이 정의에 부합하는 녀석들은 이런 것들이 있을 수 있겠다.
함수형 언어가 다인수함수를 다루는 법.
모나드(Monad)의 항등성(identity law)은 함수형 프로그래밍에서 모나드가 가져야 하는 중요한 특성 중 하나입니다. 모나드는 데이터 형식을 다루는 추상적인 개념으로, 값을 감싸거나 조작하는 데 사용됩니다.
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) 동질의 대상들을 규정하면, 그 사이를 비교하거나 대응하기 위한 수단도 필요하다. 집합의 경우 집합 사이의 함수가 그것이다.