使用GHC泛型时参数类型错误



我一直在关注GHC。泛型教程创建一个简单的泛型类型类,用于为任意类型提供默认值。但是,当我尝试加载我的文件(相关的代码片段,仍然产生错误)

{-# LANGUAGE DefaultSignatures, DeriveGeneric, TypeOperators, FlexibleContexts #-}
import GHC.Generics
class Default a where
    def :: a
    default def :: (Generic a, GDefault (Rep a)) => a
    def = to gdef
class GDefault f where
    gdef :: f a
instance (Default a, Default b) => GDefault (a :+: b) where
    gdef (L1 x) = gdef x
    gdef (R1 x) = gdef x

我得到以下错误:

Generic.hs:12:46:
    The first argument of ‘:+:’ should have kind ‘* -> *’,
      but ‘a’ has kind ‘*’
    In the instance declaration for ‘GDefault (a :+: b)’

我做错了什么?

你是说…?

instance (GDefault a, GDefault b) => GDefault (a :+: b) where ...
  --      ^           ^

相关内容

最新更新