我在这里有这个简单的代码来定义类型并使用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
中包含的所有类型都已定义。
任何想法导致了什么?
答案 0 :(得分:2)
它是''SearchRequest
,而不是SearchRequest''
。