0

内部状態を処理しているときにデータ型を設計する際に問題が発生することがよくあります。私が次の定義を持っていると仮定します:

data Action a b c = Action { on :: a -> (c, b); off :: b -> a -> c }

読み取り:オンまたはオフにできるアクション(タイプaの値が必要で、タイプcの値が生成されます)。それをオフにするには、前のon呼び出しによって与えられたタイプbの特別なデータが必要です。

次に、オンかオフかを追跡するアクションを設計します。

data StatefulAction a b c = Off (Action a b c) | On b (Action a b c)

ただし、これを使用することもできます。

data State b = Off | On b   -- or type State b = Maybe b
data StatefulAction a b c = SA (Action a b c) (State b)

どちらが望ましいですか?

4

1 に答える 1

3

意味的には、まったく同じです。

構文的には、コードをより読みやすくするものを選択する必要があると思います。typeこれにも同義語を使用できます。

于 2012-09-26T10:23:00.260 に答える