3
data Mine = Firstname String
          | Lastname String
          deriving (Show, Serialize)

これはコンパイルされず、エラーが発生します

Not in scope: type constructor or class `Serialize'

Showクラスのメンバーであるにもかかわらず、これがSerializeクラスのメンバーとして表示されないのはなぜですか。Showクラスのすべてのメンバーが問題なくシリアル化する必要があると思いましたか?

4

2 に答える 2

7

そのエラーは、Serialize型クラスがスコープ内にないことを示しています。タイプクラスを使用するには、タイプクラスを定義するパッケージをインポートする必要があります。あなたはおそらく欲しい:

import Data.Serialize

シリアルパッケージから。

于 2012-12-19T14:57:29.100 に答える
3

クラスのSerializeを自動的に派生させたい場合は、次のように実行できます。

{-# LANGUAGE DeriveGeneric #-}

import Data.Serialize (Serialize)
import GHC.Generics (Generic)

data Mine = Firstname String
          | Lastname String
          deriving (Show, Generic)

instance Serialize Mine
于 2012-12-19T16:48:59.190 に答える