私は、パレートメーターとしてそれらを管理する関数を受け取ることによって、一連の状態にわたって異なるアルゴリズムを実行するモジュールを開発しようとしています。私は実装しやすくするために別の型のエイリアスを定義していました。これは次のようになり理解するための簡単な例:型エイリアス宣言のHaskell型クラス
-- Function that expands a state
type Expand = State -> State
-- Function that evaluates a state
type Eval = State -> Float
-- Group of states
type Tree = [State]
そして私は私がequatableあるタイプの別名であることをState
を望んでいたことに気づい:ユーザーの状態が(Int, Int)
、Float
ある場合、私は本当に気にしません、彼はExpand
とEval
の機能を実装することができ、2つの異なる状態を比較することができる限り、String
となります。
これを達成するには、どのようにしてState
タイプを一般化できますか?わたしの心に来る直感的なことは、type State = (Eq a) => a
のようなものですが、それは明らかに範囲内にa
がなければ不可能です。 State
をブラックボックスとして扱う関数を宣言するための簡単な方法はありますか?