1

つまり、このような単純なものではありません (ここから):

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これを表現するためのより標準的な方法があると思います。

一般的に、レンズができること、できないこと、それがどのように行われるかを知るにはどうすればよいですか?

4

1 に答える 1