0

このエラーを解決してコードを機能させるにはどうすればよいですか?

私のデータ型:

   data ID x = ID ( ( x, Mark ), [ ID x ] ) 
   data Mark = Marked | Unmarked

インスタンスを表示:

  instance  Show a  => Show ( ID a )  where

           show t  = go " " t   where 

                  go aP ( ID ( (x, Marked ), z ) ) =

                           aP ++ x ++ "\n" 

エラー:

Couldn't match expected type `[Char]' against inferred type `a'
  `a' is a rigid type variable bound by
      the instance declaration at Dictionary.hs:117:23
  Expected type: ID [Char]
  Inferred type: ID a
In the second argument of `go', namely `t'
In the expression: go "" t
Failed, modules loaded: none.
4

1 に答える 1

4

編集:

あなたの意図を解読するのは難しいと思いますが、おそらくツリー構造を文字列として表現したいと思いますか? これを行う方法を示すデモ実装を次に示します (簡単でハックな方法で)。

data ID x = ID ((x, Mark), [ID x]) 
data Mark = Marked | Unmarked

instance Show a => Show (ID a) where
    show (ID ((x, _), ids)) = "Val: " ++ show x ++
                              ", Children: " ++ 
                              (show $ map show ids)
于 2012-04-21T10:25:49.997 に答える