Haskell:makeLenses - 数据构造函数不在范围内

the*_*uke 0 haskell template-haskell

我在这里有这个简单的代码来定义类型并用于makeLenses生成镜头。

module Api.Jira.Types.Search
  (
    SearchRequest(..)
  ) where

import GHC.Generics
import qualified Data.Text as T
import Data.Aeson (FromJSON, ToJSON)
import Control.Lens
import Data.Aeson
import Data.Aeson.Types

data SearchRequest = SearchRequest
  { _jql :: T.Text
  , _startAt :: Maybe Int
  , _maxResults :: Maybe Int
  , _fields :: Maybe [T.Text]
  , _expand :: Maybe [T.Text]
  , _properties :: Maybe [T.Text]
  } deriving (Show, Generic)

instance ToJSON SearchRequest where
  toJSON = genericToJSON defaultOptions {
             fieldLabelModifier = drop 1 }

instance FromJSON SearchRequest where
  parseJSON = genericParseJSON defaultOptions {
                fieldLabelModifier = drop 1 }

makeLenses SearchRequest''
Run Code Online (Sandbox Code Playgroud)

这导致错误:

不在范围内的数据构造函数:SearchRequest'' :: template-haskell-2.11.1.0:Language.Haskell.TH.Syntax.Name • 也许您的意思是其中之一:'SearchRequest'(第 20 行),变量 'searchRequest'(行39)

我在 SO 上发现了两个有些相关的问题,但它们与声明顺序有关,似乎不适用于此处,因为其中包含的所有类型SearchRequest都已定义。

任何想法是什么导致了这种情况?

Gur*_*las 5

是''SearchRequest,不是SearchRequest''。