2011-09-20 4 views
0

다형성 트리 유형에 대해 Show 함수를 정의하려고합니다. 누구든지 나를 도울 수 있을까?다형성 유형에 대한 함수 표시

import Char 

data Tree t = 
    NilT | 
    Node t (Tree t) (Tree t) 

class Mar t where 
    maior :: t -> String 

instance Mar Tree where 
    maior (NilT) = "a" 
    maior (Node t a b) = "b" 

instance Show Tree where 
    show = maior 

고마워요! (ivanm에 의해 주어진)


솔루션 :

import Char 

data Tree t = 
    NilT | 
    Node t (Tree t) (Tree t) 

class Mar t where 
    maior :: t -> String 

instance Mar (Tree t) where 
    maior (NilT) = "a" 
    maior (Node t a b) = "b" 

instance Show (Tree t) where 
    show = maior 

답변

4

당신이 deriving Show을 사용하지 않는 특별한 이유가 있나요? ShowRead 클래스는 실제적으로 유효한 Haskell 코드를 생성하는 정말 기본적인 직렬화/직렬화를 제공합니다.

하지만 원하는대로이 오류는 다시 Mar 클래스로 돌아가고 있다고 생각합니다. 정의 된대로 인스턴스는 종류가 * -> * (예 : Maybe Int이 아닌 Maybe)입니다. 당신이 의미 한 것은 instance Mar (Tree t) where ...입니다.

+0

샷을 주셔서 감사합니다,하지만 여전히 내게 같은 오류 (당신이 언급 한 하나) =/ – Filipe

+0

내 나쁜 일을 !!! 매우 감사합니다!!! – Filipe

1
data Tree t = 
    NilT | 
    Node t (Tree t) (Tree t) 
    deriving Show 
+0

나는 그것을 시도했다, 그것은 아직도 나에게 오류 메시지를 준다. 그냥 명확하게하기 위해, 나는 show 함수를 오버라이드하고 싶다. – Filipe

관련 문제