저는 하스켈에 매우 익숙하고 연습하기 위해 주사위 굴림에 기초한 d & d 스타일 게임을 만들기로 결정했습니다. 그리고 더 큰 숫자의 승리를 얻은 사람이면 누구나 할 수 있습니다. 그러나 나는 내 레코드의 가치를 어떻게 바꾸고 레코드의 글로벌 가치를 바꾸는 지에 대해 다소 혼란 스럽다. 나는을 위해 인터넷을 통해 모두를 검토 한하스켈에있는 레코드의 값 변경하기
takeDamage:: State PlayerStats()
takeDamage = do
let h = defaultStats health
h <- get
put $ (h - 10)
: 플레이어가 주사위 롤을 잃으면 내 함수가 피해를하기 위해 여기에
data PlayerStats = PlayerStats { health :: Health
,mana :: Mana
,inventory :: [Items] }deriving (Show,Eq)
defaultStats = PlayerStats {health = 100, mana = 50, inventory = []}
그리고 다음은
내 기록 코드 내 문제와 같은 문제에 대한 해결책을 찾지 못했지만 아무 것도 찾지 못했습니다. 그래서 제 상황의 다른 사람들에게 유용 할 수 있다고 생각합니다. 그래서, 기록이 아닌 기능입니다
당신이 말하는'State' 트랜스포머 라이브러리 나 다른 모듈의'Control.Monad.Trans.State'에서 온 것입니까? –
Control.Monad.State를 사용하고 있습니다. – DRutherford