0

このtypedefからオブジェクトがあります。

type ListDA = (State, [((State, Char), State)], [State])

関数の場合、2番目の引数が必要ですが、これを取得する方法がわかりません。

4

1 に答える 1

5

ヘルパー関数を書くことができます:

snd3 :: (a, b, c) -> b
snd3 (_, b, _) = b

または、関数パラメータで直接パターンマッチングを行うこともできます。たとえば、次のように置き換えます。

yourFunction object = ...

yourFunction object @ (_, secondArgument, _) = ...

別のタイプを定義する方がよい場合があります。

data ListDA = ListDA {firstField  :: State,
                      secondField :: [((State, Char), State)],
                      thirdField  :: [State]}

このメソッドは、アクセサ関数を定義します。

于 2012-11-21T10:06:30.600 に答える