"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 모노그램은 기능 범주의 모노리스입니다 ...

모노그램은 기능 범주의 모노리스입니다 ...

2025-04-13에 게시되었습니다
검색:597

A monad is a monoid in the category of endofunctors...

monad는 무엇입니까?

Monad는 endofunctors ... ... 의 범주에있는 monoid

입니다.

... 다시 시도합시다 :

Monad는 기능 프로그래밍에 사용되는 추상화가 일관된 방식으로 계산을 처리합니다. 통제 된 방식으로 상태 변경, I/O 또는 오류와 같은 부작용을 캡슐화하면서 작동을 체인 할 수있는 설계 패턴입니다.

Monads는 값을 감싸고 기능을 적용하는 방법으로 생각하여 예측 가능하고 제어 된 환경에서 계산이 수행되도록합니다.

나의 개인적인 이해는 다음과 같습니다. Monad는

가있는 데이터 구조입니다.
  • 단일의 불변의 가치 (또는 기능)
  • 그 값에 함수를 매핑하는 맵/바인드 함수
  • 새로운 상태를 새로운 모나드로 반환하는 반환/평평한 함수

이것은 불변성과 기능적 순도를 보존하는 방식으로 작업의 체인 및 구성을 가능하게합니다.이 클래스에 대한 "역"접근 방식은 상태를 수정할 수없는 클래스에 대한 "역"접근 방식이지만 새로운 인스턴스를 생성하기 위해 기능적으로 적용됩니다.

.

이 "리버스 대칭"은 대비를 강조합니다 :

  • 클래스는 내부 상태를 수정하여 내부 방법을 통한 돌연변이 및 직접 상호 작용을 유지합니다. 대부분의 시간은 글로벌 상태

  • 와 상호 작용합니다.
  • 예:

수업: Box 클래스는 값을 유지하며 SetValue (NewValue)와 같은 메소드를 호출하여 값을 수정하여 상자의 내부 상태를 돌연변이합니다.

모나드: Boxmonad는 불변의 방식으로 가치를 유지할 것입니다. 값을 변환하려면 MAP와 같은 함수를 사용하여 외부 함수를 값에 적용하고 새 값으로 새로운 BoxMonad를 반환합니다.
  • Python의 예제 프로젝트 :
  • https://github.com/blackopsrepl/py-monad-task-manager] ]&&&]
  • 이 응용 프로그램에서는 State Monad를 사용하여 작업 목록의 상태를 관리합니다. State Monad는 작업 관리 프로세스를 응용 프로그램의 상태에서 일련의 변환으로 모델링하는 동시에 상태 자체를 불변으로 유지하는 방법을 제공합니다.

작업 목록의 상태를 직접 수정하는 대신 return_ 함수를 사용하여 초기 상태를 모나디 한 컨테이너로 랩핑하고 바인드 함수를 예측 가능한 방식으로 상태로의 변환을 적용합니다. 작업이 수행 될 때마다 (예 : 작업 추가, 편집 또는 삭제), 상태의 새로운 인스턴스를 반환하여 불변성과 부담 가능성을 보장합니다.

키 함수 :

return_ : 값을 모나디 한 컨테이너로 랩핑하여 모나디 한 계산 체인의 일부로 만듭니다.

bind : Monad 내부의 값에 함수를 적용하여 변환 된 값을 가진 새로운 모나디 한 컨테이너를 반환합니다.

  • State Monad를 사용함으로써, 우리는 상태가 불변으로 업데이트되고 계산이 부작용이나 작업 간의 원치 않는 상호 작용없이 구성되는 방식으로 작업 관리 작업을 처리 할 수 ​​있습니다.
릴리스 선언문 이 기사는 https://dev.to/blacopsrepl/a-monad-is-a-onoid-in-the-category-of-endofunctors-47oi ?1에서 재 인쇄되었습니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3