関数型言語Part5
■ このスレッドは過去ログ倉庫に格納されています
0522デフォルトの名無しさん
2011/10/23(日) 13:08:08.48正直、何か別のものと混同してる感じは自分もする
状態マシンというものを勝手に拡張して解釈しているかも知れん
結合度の事はとりあえず置いておいて、>>510 の前半で言いたかったのは、
C# だとこんな感じなる状態遷移の実装(文法や初期化とかは気にするな)
実際に状態遷移させるのは別のクラスで状態遷移表なんかを使ってやってるとする
class State {
public int next (int e);
}
class StateA : State {
private int x;
public State next (int e) {
x = f(x, e); // 適当な関数 f によって計算
return x;
}
状態Aの次にどの状態に遷移するかは状態Aのメンバ関数 next の戻り値に依るんだけど、
その戻り値が状態Aが保持してるメンバ変数 x に依存してる
つまり、状態Aのメンバ変数 x はずっと保持しておかなければならない
他のクラスのインスタンスからもアクセスされてはいけない
こういうパターンって普通にあるよね(ゲームなんか作ってるとよくある)
これ、関数型(わたしは Haskell しか使えないけど)だと、
自分では未だになかなか綺麗に関数型らしく書けなくて毎回悩むところ
(IORef で妥協するのは何か気持ち悪い)
■ このスレッドは過去ログ倉庫に格納されています