Bifunctor
으로 작업 할 때 first
및 second
"지도"기능에 액세스 할 수 있습니다. 기본적으로 Functor
은 fmap
의 두 가지 방식으로 허용합니다.Bifunctor에 해당하는 Monoid가 있습니까?
Monoid
에는 어떤 것이 있나요? 우리가 두 가지 다른 방식으로 추가 할 수있게 해주는 개념?
예를 들어, 불투명 한 Matrix
유형을 상상해보십시오. 목록 또는 벡터 벡터 목록이 아니기 때문에 내부적으로 어떻게 구조화되어 있는지 알지 못하지만 행과 열을 추가 할 수 있다는 것을 알고 있습니다.
이 작업을 수행 할 수있는 일부 유형 클래스가 있습니까?
class X a where
firstAppend :: a -> a -> a
secondAppend :: a -> a -> a
instance X Matrix where
firstAppend = appendRow
secondAppend = appendColumn
가 난 아무것도 표준의 인식 정의 아니에요 . 당신은 확실히 그것을 스스로 정의 할 수 있습니다. 유형 수준에서는 차별화 할 것이 없기 때문에 가치에 대해서는 잘 모르겠습니다. 더 적절한 해결책은'newtype' 래퍼와'Data.Monoid'의'Product'와'Sum'과 비슷한 두 개의 다른 인스턴스가 될 것이라고 생각합니다. – ryachza
예 @ryachza 더 적절한 해결책이 될 수 있다고 생각합니다. –
이것은 정기적으로 임시 방편으로 수행됩니다 (예 : [다이어그램에서] (http://hackage.haskell.org/package/diagrams-lib-1.4.1.2/docs/Diagrams-TwoD-Combinators.html#v:-61--61--61-), [matrix ] (http://hackage.haskell.org/package/matrix-0.3.5.0/docs/Data-Matrix.html#g:9) 또는 [hmatrix] (http://hackage.haskell.org/package/hmatrix) -0.18.1.0/docs/Numeric-LinearAlgebra-Data.html # g : 12). – leftaroundabout