haskell - 即使 DeriveGeneric 打开,派生 Generic 也不起作用

标签 haskell generics haskell-stack

我正在尝试遵循 Beam Haskell 库的教程:https://tathougies.github.io/beam/tutorials/tutorial1/

module Lib
    ( someFunc
    ) where

{-# LANGUAGE
    DeriveGeneric
  , GADTs
  , OverloadedStrings
  , FlexibleContexts
  , FlexibleInstances
  , TypeFamilies
  , TypeApplications
 #-}

import Database.Beam
import Database.Beam.Postgres
import GHC.Generics

import Data.Text (Text)

data UserT f
    = User
    { _userEmail     :: Columnar f Text
    , _userFirstName :: Columnar f Text
    , _userLastName  :: Columnar f Text
    , _userPassword  :: Columnar f Text }
    deriving Generic

someFunc :: IO ()
someFunc = putStrLn "someFunc"

这会导致以下错误:

    • Can't make a derived instance of ‘Generic (UserT f)’:
        You need DeriveGeneric to derive an instance for this class
    • In the data declaration for ‘UserT’
   |
27 |     deriving Generic
   |              ^^^^^^^

请注意,存在 DeriveGeneric 语言编译指示。

我在这里缺少什么?

构建环境:

  • 堆栈 lts-11.9
  • Linux

最佳答案

{-# LANGUAGE #-} 声明需要位于文件的最顶部,位于 module 声明之前。

关于haskell - 即使 DeriveGeneric 打开,派生 Generic 也不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50314032/

相关文章:

regex - Haskell中原始但有效的grep克隆?

java - `class <T extends A> { }` 和使用 A 的 `class { }` 之间的实际区别是什么?

haskell - 堆栈 ghci 未加载本地模块?

haskell - 如何列出 `stack` 安装的全局包?

haskell - 函数依赖在 Haskell Collection API 的 `Unfoldable` 类型类中的作用

c++ - Haskell 中的面向对象编程

haskell - 惯用的高效 Haskell append ?

java - 使用 Stream API 进行转换

generics - Kotlin 用子类型覆盖 fun

haskell - 如何使用stack镜像容器?