Haskellで状態を使用する2つの部分があります。最初のものは、ちょうど他の言語のようにあなたのものを表現するためにデータ型をモデリングして作成しています。たとえば:
data Card = NumberCard Int | Jack | Queen | King | Ace
type Hand = (Card, Card)
data Player = Player Hand Int --a hand and his purse
data Action = Fold | Check | Bet Int | Raise Int
type Deck = [Card]
type TableState = ([Player], Deck)
--and functions to manipulate these, of course...
は、その後、あなたがこの状態を使用かの部分があります。あなたはモノ作りを始めるのにモナドを知る必要はありません(とにかく基本を習得したら、高度なトピックだけを気にする必要があります)。特に、あなたは本当に "状態"を使用する必要はありません、あなたは機能的なスタイルでこれらの値を受け取って返す必要があります。
たとえば、ラウンドは、テーブル状態(プレーヤーとデッキのリスト)、プレーヤーのアクションのリストを取得し、新しいテーブルの状態を返す関数です(これらのアクションを指定してroudを実行した後)。
playRound :: TableState -> [Action] -> TableState
playRound (players, deck) actions = ...
もちろん、新しいテーブルの作成後に古いテーブルの状態を忘れてしまったことを確認することは、あなたの責任です。国家モナドのようなものは、この種の組織上の問題に役立ちます。
[ハスケルと州](http://stackoverflow.com/questions/3944170/haskell-and-state) –