int와 문자열을 사용하는 새로운 유형을 정의한다고 가정합니다. 나는이처럼 정의 알고Haskell에서 알려진 유형으로 구성된 새 유형 정의
data Comp = Comp Int String
그러나이 표기법의 문제는 내가이 형식의 인스턴스가있는 경우 인스턴스의 형태로되어 있다는 것입니다 :
Comp 45 "heloWorld"
그리고 나는 그것을 원하지 않는다. 데이터 타입의 이러한 "매개 변수"(더 많은 레코드 항목과 같이)를 원한다. 예를 들어, 문자로 분리해야한다. 또는 공백 대신 #를 사용하십시오. 그 캐릭터가 아무 것도하지 않기를 바랄뿐입니다. 사용하고 싶은 표기법입니다. 이 경우 45#"hii"
대신 45 "hii"
이 필요합니다. 이 작업을 수행하려면 데이터 유형 정의를 어떻게 조정해야합니까? 이 데이터 형식에 대해 연산자를 오버로드 할 계획이므로 예 : 45#"kkk" + 128#"a"
은 유효한 연산이어야합니다.
예를 들어 작동하려면 'Comp'에 대해 'Num'을 구현해야합니다. 어떻게 작동해야합니까? – Lee
하지만 오직 '+'만하고 싶다면'<>'대신'Num'대신'Monoid'를 사용하는 것이 좋습니다. – kqr