タイプAからタイプBまでのトータルマップを持っています。
import qualified Data.Map as M
import Data.Maybe
tmGet k m = fromJust $ M.lookup k m
tmSet k v = M.insert k v
Data.Map実装例として使用しましたが、何でもかまいません。たとえば、インデックス付きのタプルArrayでもかまいません。Bool
tmGet True = fst
tmGet False = snd
tmAtレンズを構築する関数が必要です。
(42, 665) ^. tmAt True == 42
(42, 665) & tmAt False +~ 1 == (42, 666)
問題は、 and (or )からどのように構築tmAtするかです。tmGettmSettmModify