방금 hackage 패키지 OneTuple을 발견했습니다. 나는 그것의 목적을 알고 싶다, 나는 확실히 그것의 재미를 위해 그것을 만들지 않았다. 언제 이것이 유용 할 수 있습니까? 그것은 무엇을하는지는 분명하지만, 그것을 사용할 때는 아닙니다.언제 OneTuple을 사용하고 싶습니까?
그래서 누구나이 멋진 혜택을 누릴 수있는 멋진 사례를 알고 계십니까? 아니면 뒤에 수학적 아름다움을 보여?
방금 hackage 패키지 OneTuple을 발견했습니다. 나는 그것의 목적을 알고 싶다, 나는 확실히 그것의 재미를 위해 그것을 만들지 않았다. 언제 이것이 유용 할 수 있습니까? 그것은 무엇을하는지는 분명하지만, 그것을 사용할 때는 아닙니다.언제 OneTuple을 사용하고 싶습니까?
그래서 누구나이 멋진 혜택을 누릴 수있는 멋진 사례를 알고 계십니까? 아니면 뒤에 수학적 아름다움을 보여?
OneTuple
그것이 부가 바닥 값을 가지는 대신 data
newtype
의 사용 이후 거의 것을 제외하고는 일반적으로 모나드 변환기 스택의베이스로 사용된다 Identity
모나드, 동일이다.
그것이 의미하는 바는 구현하는 대부분의 유형 클래스 중 가장 간단한 예이기 때문에 흥미 롭습니다. 하지만 실용적이지는 않습니다.
나는 간접적 인 계층을 추가로 만들 때만 실제적인 사용을 볼 수 있습니다. – fuz
튜플에 대해 작동하는 (약간 어리석은) typeclass가 있다고 가정 해보십시오. (a,a)
에 대한 인스턴스가 있고 (a,a,a)
에 대한 인스턴스가 있습니다. 단일 값에 대한 인스턴스도 필요합니다. 그러나 다른 모든 것들과 겹치기 때문에 a
에 대한 인스턴스를 만들 수는 없습니다! 그러나 OneTuple a
에 대한 인스턴스를 만들 수 있습니다.
이제 typeclass는 쓸모가 없지만 거의 비슷한 typeclass를 상상하기 쉽습니다. http://hackage.haskell.org/packages/archive/mysql-simple/0.2.0.2/doc/html/Database-MySQL-Simple-QueryResults.html
이 신원 모나드 구현이 농담이 아닌 것처럼, 가장 확실하게 하지 농담입니다 : 사실, 이것은 BOS 'MySQL의 라이브러리에 Only
의 사용은 정확하게이다. 일반 유형 a
과 달리 모든 유용한 인스턴스를 얻습니다. 추가 바닥을 얻으면 싱글 톤 튜플을 다른 튜플 유형의 의미에 훨씬 가깝게 가져옵니다.
이 경우의 사용 사례는 신원 모나드와 마찬가지로 일반화입니다. 당신은 polymorphic functor 타입을 가진 응용/모나 딕 함수를 가지고 있습니다. 예를 들어 열거자인과 같은 유용한 패키지는 사용자가 선택한 모나드를 지원합니다. OneTuple
의 약간 다른 의미 (Identity
과 비교)는 데이터 종속성이 복잡하거나 추가 게으름을 원할 때 매우 유용 할 수 있습니다. Identity
은이를 알려주지 않습니다.
"저자가 재미있게 만들지 않았다고 확신합니다."- 하스켈 커뮤니티의 유머 감각을 과소 평가했을 수 있습니다. – MatrixFrog
개구리가 말한 바. 기존 패키지의 실제 이유가없는 패키지의 예는 acme 패키지 카테고리를 참조하십시오. –