Hackage에는 모나드 변환기를위한 여러 패키지가 있습니다.
- mtl : Monad 변환기 라이브러리
- 변압기 : 콘크리트 펑터 및 모나드 변압기
- monads-fd : 기능적 종속성을 사용하는 Monad 클래스
- monads-tf : 유형 패밀리를 사용하는 Monad 클래스
- monadLib : 모나드 변환기 모음입니다.
- mtl-tf : 유형 패밀리를 사용하는 Monad 변환기 라이브러리.
- mmtl : 모듈 식 Monad 변환기 라이브러리
- mtlx : '무료'복사본을 제공하는 유형 인덱스가있는 Monad 변환기 라이브러리.
- compose-trans : 컴포저 블 모나드 변환기
(그리고 아마도 내가 놓친 것)
어느 것을 사용할까요?
mtl은 Haskell Platform의 하나이지만 reddit에서 계속해서 쿨하지 않다고 들었습니다.
하지만 어쨌든 선택의 나쁜 점은 좋은 것 아닌가요?
글쎄요, 예를 들어 데이터 접근 자의 작성자가 대중적인 선택을 충족시키기 위해이 모든 것을 만들어야하는 방법을 보았습니다.
- data-accessor-monadLib 라이브러리 : monadLib의 모나드에 대한 접근 자 함수
- data-accessor-monads-fd 라이브러리 : Accessor를 사용하여 monads-fd 상태 모나드 클래스의 상태에 액세스
- data-accessor-monads-tf 라이브러리 : Accessor를 사용하여 monads-tf State 모나드 유형 패밀리의 상태에 액세스합니다.
- data-accessor-mtl 라이브러리 : Accessor를 사용하여 mtl State monad 클래스의 상태에 액세스
- data-accessor-transformers 라이브러리 : Accessor를 사용하여 변환기 상태 모나드의 상태에 액세스
이것이 계속되고 예를 들어 경쟁하는 여러 Arrow 패키지가 진화하면 다음과 같은 것을 볼 수 있다고 생각합니다.
그런 다음 spoonklink가 분기되면 Hackage가 디스크 공간을 다 써 버릴까 걱정합니다. :)
질문 :
- 모나드 변환기 패키지가 많은 이유는 무엇입니까?
- mtl [고려 됨]이 멋지지 않은 이유는 무엇입니까?
- 주요 차이점은 무엇입니까?
- 이러한 경쟁 패키지의 대부분은 Andy Gill이 작성했으며 Ross Paterson이 관리합니다. 이것은 이러한 패키지가 경쟁이 아니라 어떤 식 으로든 함께 작동한다는 것을 의미합니까? 그리고 Andy와 Ross는 자신의 패키지가 쓸모 없다고 생각합니까?
- 당신과 나는 어느 것을 사용해야합니까?