Haskell:makeLenses - 数据构造函数不在范围内
Posted
技术标签:
【中文标题】Haskell:makeLenses - 数据构造函数不在范围内【英文标题】:Haskell: makeLenses - data constructor not in scope 【发布时间】:2017-12-10 18:25:38 【问题描述】:我这里有这个简单的代码来定义一个类型并使用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''
这会导致错误:
数据构造函数不在范围内: 搜索请求'' :: template-haskell-2.11.1.0:Language.Haskell.TH.Syntax.Name • 也许您的意思是其中之一: ‘SearchRequest’(第 20 行),变量‘searchRequest’(第 39 行)
我在 SO 上发现了两个有点相关的问题,但它们与声明顺序有关,似乎不适用于这里,因为 SearchRequest
中包含的所有类型都已定义。
任何想法是什么原因造成的?
【问题讨论】:
【参考方案1】:这是''SearchRequest
,而不是SearchRequest''
。
【讨论】:
哈哈哎哟。嗯,不好意思……感谢您的快速响应,一旦时间限制到期我会接受。以上是关于Haskell:makeLenses - 数据构造函数不在范围内的主要内容,如果未能解决你的问题,请参考以下文章