inverseMass
Maybe Float
RigidBody
. inverseMass
- Just someMass
, . Nothing
, RigidBody
. . , , Haskell .
, RigidBody
, :
data RigidBody = RigidBody
{ rigidBodyMass :: Float
, rigidBodyInverseMass :: Maybe Float }
inverseMass :: RigidBody -> (Float, RigidBody)
inverseMass b@(RigidBody _ (Just inv)) = (inv, b)
inverseMass (RigidBody mass Nothing) = let inv = 1 / mass
in (inv, RigidBody mass (Just inv))
, . , . , , State
. State
RigidBody
, , . :
inverseMass :: State RigidBody Float
inverseMass = do
RigitBody inv maybeInverse <- get
case maybeInverse of
Just inv -> pure inv
Nothing -> do
let inv = 1 / mass
put $ RigidBody mass (Just inv)
pure inv
inverseMass
, , .
, , ++, . RigidBody
. , RigidBody
, . , , RigidBody
. Haskell ( ) , . , . inverseMass
monadic action ( , ) . Haskell .
, : , . Haskell , , .