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

时间:2017-12-10 18:25:38

标签: 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''

这会导致错误:

  

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

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

任何想法导致了什么?

1 个答案:

答案 0 :(得分:2)

它是''SearchRequest,而不是SearchRequest''