つまり、このような単純なものではありません (ここから):
strike :: StateT Game IO ()
strike = do
lift $ putStrLn "*shink*"
boss.health -= 10
しかし、lens を使用して から型をマッピングするようなものLinear
です。これをレンズで表現すると、次のようになります。
vecMod :: (Integral a) => V2 a -> V2 a -> V2 a
vecMod (V2 x1 y1) (V2 x2 y2) = V2 (x1 `mod` x2) (y1 `mod` y2)
別の例: 現在のコードは、次のような小さな式でいっぱいです。
isAt :: Thing -> Position -> Game Bool
isAt thing pos = do
b <- use board
return $ elem thing (b ! pos)
(ボードがある場所Array (V2 Int)
)
lens
これを表現するためのより標準的な方法があると思います。
一般的に、レンズができること、できないこと、それがどのように行われるかを知るにはどうすればよいですか?