제약 조건을 사용하여 모든 기본 유형 클래스를 일반화하여 제약 조건을 허용하는 라이브러리가 있습니까?

StackOverflow https://stackoverflow.com//questions/12697348

  •  12-12-2019
  •  | 
  •  

문제

확장 구속 조건은 기본 유형 클래스의 기능을 확장하여 제약 조건을 허용 할 수 있습니다.예를 들어, 우리는 unboxed 벡터 펑터를 만들 수 있습니다 :

class Functor f where
    type FunctorConstraint f x :: Constraint
    type FunctorConstraint f x = ()
    fmap :: (FunctorConstraint f a, FunctorConstraint f b) => (a -> b) -> f a -> f b

instance Functor VU.Vector where
    type FunctorConstraint VU.Vector x = VU.Unbox x
    fmap = VU.map
.

(이 블로그 게시물 자세한 내용은

이 새로운 스타일의 기본 라이브러리 유형 클래스의 다소 큰 부분을 시행 한 것입니다 (기본적으로 나는 복싱 된 벡터 및 목록간에 상호 교환 적으로 일할 수 있기를 원합니다).이 라이브러리가 이미 존재하는지 궁금해하고 있습니다.나는 사용해야합니다. 또는 내가 내려 가고 해상 방지에 추가 해야하는 경우


편집 : 또한이를 바닥에 직접 추가 할 계획입니까?클래스 정의를 직접 업데이트하여 다른 것을 끊어서는 안된다.

도움이 되었습니까?

해결책

아무도 라이브러리가없는 것처럼 들리므로 ConstraintStkinds와 github에 업로드 에 업로드했습니다.그것은 현재 매우 간단하며 아직 다른 사람의 사용 사례를 다루지는 않지만 자신의 변경을하거나 요청을 제출하는 것을 자유롭게 느끼게합니다.

프로젝트를 해상 방향으로 업로드하기 전에 좋은 방향 인 경우 더 많은 피드백을 기다릴 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top