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 , , .