Traversal として文字列リテラルを使用したいのですが、型が少しわかりません。このインスタンスを作成することは可能ですか?
import Control.Lens
import Data.Aeson
import Data.Aeson.Lens
import Data.String
import Data.Default
{- Having:
key' :: AsValue t => Text -> Traversal' t (Maybe Value)
_JSON :: (ToJSON a, FromJSON a) => Traversal' t a
-}
instance (AsValue t, FromJSON v, ToJSON v, Default v) => IsString (Traversal' t v) where
fromString k = key' (fromString k) . non (toJSON def) . _JSON
State モナド内でこのようなことを達成するには:
"some-key" .= (3 :: Int)
全称量化型インスタンスの問題。ありがとう!