1

私の割り当てでは、次のようなプリミティブ関数を作成する必要があります。

私の質問は、Prim Eq、Prim Less、Prim Greatは、文字列、数値などのあらゆる種類のパラメーターを受け取ることができるはずですが、その戻り型は常にブール値です...したがって、型aとbを指定する方法がわかりません。

これにアプローチする方法を知っているなら、私に知らせてください。よろしくお願いします。どうもありがとうございます。

4

2 に答える 2

4
prim Less [Number a, Number b] = Bool (a < b)
prim Less [String a, String b] = Bool (a < b)
prim Great [Number a, Number b] = Bool (a > b)
prim Great [String a, String b] = Bool (a > b)

a型でbはありません。それらは値です。ここで何を指定したいのかわかりません。

于 2013-02-01T14:47:39.810 に答える
0

あなたが見たいのはGADTです。ただし、関数を使用できない場合もありますが、コンストラクターに型シグネチャをprim追加できれば、型の安全性を高めることができます。たとえば、これを行う方法はGADTです。Eq :: Value a -> Value a -> Value Bool

于 2013-02-01T14:53:42.410 に答える