脱糖フィールドがキーワードである場合、lens はどのように処理しますか? 何か特別なことが行われたことを読んだことを覚えているようですが、どこで読んだのか、「lensed」アクセサーの名前が何になるのか思い出せません。
次の点を考慮してください。
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
import Control.Lens
import Control.Monad.IO.Class (liftIO)
import Data.Maybe
import Data.Aeson
import Data.Aeson.TH
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString.Lazy.Char8 as LC8
import qualified Data.Text.Lazy.Encoding as TLE
data Typ = Typ {
_fld1 :: BS.ByteString
, _type :: Int
} deriving (Show)
$(deriveJSON tail ''Typ)
$(makeLenses ''Typ)
main = do
print $ typ^.fld1
print $ typ^.getType
where
jsonTyp = "{\"fld1\": \"Test\", \"type\": 1 }"
typ' = decode jsonTyp :: Maybe Typ
typ = fromJust typ'
getType :: Getter Typ Int
getType = to _type
アクセサーは何と_type
呼ばれ、ここで実装する必要がないようにするにはどうすればよいgetType
ですか?
ここでは適切な開発環境にアクセスできないため、これを学校の haskell にぶつけなければなりませんでしたが、他の人にとっては役立つかもしれないと思います。ghciに立ち寄って:browse
(それで答えが得られれば)できるようになったら答えを追加しますが、それまでに誰か知っていますか?
結論
ありがとう、私はmakeLensesWith
エドワードの提案に従って、置換へのキーワードのマッピングと一緒に使用します。