monad는 무엇입니까?
Monad는 endofunctors ... ... 의 범주에있는 monoid
입니다.... 다시 시도합시다 :
Monad는 기능 프로그래밍에 사용되는 추상화가 일관된 방식으로 계산을 처리합니다. 통제 된 방식으로 상태 변경, I/O 또는 오류와 같은 부작용을 캡슐화하면서 작동을 체인 할 수있는 설계 패턴입니다.
Monads는 값을 감싸고 기능을 적용하는 방법으로 생각하여 예측 가능하고 제어 된 환경에서 계산이 수행되도록합니다.
나의 개인적인 이해는 다음과 같습니다. Monad는
가있는 데이터 구조입니다.이것은 불변성과 기능적 순도를 보존하는 방식으로 작업의 체인 및 구성을 가능하게합니다.이 클래스에 대한 "역"접근 방식은 상태를 수정할 수없는 클래스에 대한 "역"접근 방식이지만 새로운 인스턴스를 생성하기 위해 기능적으로 적용됩니다.
.이 "리버스 대칭"은 대비를 강조합니다 :
클래스는 내부 상태를 수정하여 내부 방법을 통한 돌연변이 및 직접 상호 작용을 유지합니다. 대부분의 시간은 글로벌 상태
예:
모나드: Boxmonad는 불변의 방식으로 가치를 유지할 것입니다. 값을 변환하려면 MAP와 같은 함수를 사용하여 외부 함수를 값에 적용하고 새 값으로 새로운 BoxMonad를 반환합니다.
작업 목록의 상태를 직접 수정하는 대신 return_ 함수를 사용하여 초기 상태를 모나디 한 컨테이너로 랩핑하고 바인드 함수를 예측 가능한 방식으로 상태로의 변환을 적용합니다. 작업이 수행 될 때마다 (예 : 작업 추가, 편집 또는 삭제), 상태의 새로운 인스턴스를 반환하여 불변성과 부담 가능성을 보장합니다.
return_ : 값을 모나디 한 컨테이너로 랩핑하여 모나디 한 계산 체인의 일부로 만듭니다.
bind : Monad 내부의 값에 함수를 적용하여 변환 된 값을 가진 새로운 모나디 한 컨테이너를 반환합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3