Closed master-q closed 5 years ago
Example:
{-# LANGUAGE TemplateHaskell #-} import Lens.Micro import Lens.Micro.Mtl import Lens.Micro.TH import Control.Monad.State data Bird = Bird { _pos :: (Double, Double) , _speed :: (Double, Double) } deriving Show makeLenses ''Bird move :: Bool -> State Bird () move pressed = do if pressed then speed._2 .= 10 else speed._2 -= 0.1 (speedX, speedY) <- use speed pos._1 += speedX pos._2 += speedY main = do let bird = Bird {_pos = (0,0), _speed = (1,1)} print $ execState (move False) bird
Don't use Lens.
Example: