2017-02-19 2 views
2

하스켈에서 플레이어와 AI가 차례대로 행동을 취하고 있습니다. 지금까지 인공 지능은 게임에 대한 모든 정보 (예 : GameHistory -> GameState -> Action)의 기능을 사용하여 작업을 생성했습니다.상담원이 내부 상태를 유지할 수 있도록 허용

이렇게하면 이러한 함수는 호출 할 때마다 기록에서 필요한 정보를 생성합니다. 자신의 턴 (즉, 해당 기능 호출)간에 지속되는 일종의 "내부 상태"를 가질 수 있다면 AI를 작성하는 것이 훨씬 쉽습니다. 어떻게 그런 식으로 뭔가를 구현할 수 있을까요? (그런데, 나는 또한 AI가 다른 종류의 내부 상태가 다른 유형을 가질 수 있음을 고려해야한다.)

+1

이 질문이 너무 광범위하다는 것을 알고 있습니다. "상태 모나드 사용"보다 구체적 인 답변을 드릴 수는 없습니다. 실제 코드를 제공하기 위해 질문을 편집 할 수 있다면 우리는 아마도 도움이 될 것입니다. –

+0

@aclow 다소 관련 : http://stackoverflow.com/questions/40698396/how-can-i-handle-user-plugins-in-my-types/ – danidiaz

+0

@ danidiaz 감사합니다, 내가 뭘 찾고있는 것처럼 보입니다. 나는 그것을 시도 할 것이다. – aclow

답변

2

당신이 같은 수 있습니다 찾고있는 무엇 : 당신 즉

newtype AI = AI { runAI :: GameState -> (AI, Action) } 

를 ' 액션과 함께 배우의 새로운 상태를 반환합니다. 여기서 State 모나드를 사용할 수 있습니다. 또한 오토 마타에 대해 읽는 것에 관심이있을 수 있습니다. AI (데이터베이스에 저장하려면 말하기)을 직렬화해야한다면 다른 것을해야 할 수도 있습니다.