대신 뭔가 VectorSpace
-y 또는 R2
의 오히려 더 일반적인 짐승이 여기에 숨어 수도 나에게 발생 유용한 표준 클래스 to this one바이 콤 노나드의 방법은 무엇입니까?
class Coordinate c where
createCoordinate :: x -> y -> c x y
getFirst :: c x y -> x
getSecond :: c x y -> y
addCoordinates :: (Num x, Num y) => c x y -> c x y -> c x y
을 제안 무엇을 숙고하는 동안 : 그 두 포함 된 유형이 모두 추출 할 수있는 Type -> Type -> Type
. 흠, 아마도 그들은 extract
ed 일 수 있습니까?
comonad
또는 bifunctors
패키지에는 Bicomonad
이라는 항목이 포함되어 있지 않습니다. 문제는, 그러한 수업은 이론적으로는 카테고리 이론적으로도 의미가 있습니까? 법률
fst . bidup ≡ id
snd . bidup ≡ id
bimap fst snd . bidup ≡ id
bimap bidup bidup . bidup ≡ bidup . bidup
와 아마
class Bifunctor c => Bicomonad c where
fst :: c x y -> x
snd :: c x y -> y
bidup :: c x y -> c (c x y) (c x y)
하지만 난 그것을 찾을 : (도 정의되지 않으며, 정말 볼 수있는 방법을 볼 수있는) Bimonad
달리, 순진한 정의는 그럴듯하게 보인다 두 필드 모두 bidup
에 동일한 유형이 포함되어 있음을 불안하게하고 다른 많은 "좋은"생각할 수있는 서명이 상당히 많이 있습니다.
의견이 있으십니까?
답이 아닙니다. 그러나 ** endo ** 펑터의 카테고리에서 (공저) 모나드는 (텐서 곱으로 펑터 구성을 포함하고 있습니다) 맞습니까? Haskell bifunctors는 내과 의사가 아닙니다. 그래서 나는 진짜 bi (co) 모나드가 어떤 모습인지, 심지어 bifunctors 위에 그런 것을 만드는 것이 합리적이지도 모르겠다. 그러나 bicomonad와 "비슷하게"보일만한 유용한 무언가가있을 수 있으므로 여전히 흥미로운 질문입니다. –