5

タイプ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

4

2 に答える 2