사용자 정의 유형을 표시의 인스턴스로 만들려고합니다.하스켈에서 임의의 재귀 유형에 대한 표시 정의
여기에 theType이 있습니다. 기본 Set 유형입니다.
data Set a = Insert a (Set a) | EmptySet
나는
Insert 1 (Insert 2 (Insert 3 EmptySet))
과 같이 내가 이것을 어떻게
{1, 2, 3}
처럼 표시 할? 문자열 연결을 시도했지만 문자열 보간 작업이 나쁜 형식으로 간주됩니다 (하스켈이 기본적으로 지원하지 않는 것 같습니다). 또한 목록에서 중괄호를 어떻게 얻을 수 있습니까? 지금까지 내가 요리 할 수 있었다 모두가 기본적으로 아무것도 ...
instance (Show a) => Show (Set a) where
show EmptySet = ""
show (Insert a as) = show a ++ show as
은 또한, 나는이에 구현하는 방법을 볼 수 있도록 목록 구현을 찾을 Hoogle 및 Hayoo를 사용하려고하지 않습니다 어떤이 있었다 기울기. 나는 그것을 발견 할 수 없었다. 누구든지이 포인터를 가지고 있습니까? "show :: [a] -> String", "Data.Lists", "Lists"등을 검색하려고했습니다 ...
그런데 이것은 아마도 나쁜 생각 일 것입니다. 'show'의 결과는'show'에 전달 된 값과 동일한 값을 생성하는 유효한 하스켈 코드 여야합니다. 'fromList' 함수를 정의하고 집합 {1, 2, 3}에'show '를 만드는 것이 좋습니다. 'fromList [1, 2, 3]'; 이것은 표준 Data.Map 및 Data.Set 라이브러리가 취하는 접근 방식입니다. 또는,이 표기법으로 세트를보기 위해'show' 대신에 호출되는 함수를 정의 할 수 있습니다. – ehird