私の割り当てでは、次のようなプリミティブ関数を作成する必要があります。
私の質問は、Prim Eq、Prim Less、Prim Greatは、文字列、数値などのあらゆる種類のパラメーターを受け取ることができるはずですが、その戻り型は常にブール値です...したがって、型aとbを指定する方法がわかりません。
これにアプローチする方法を知っているなら、私に知らせてください。よろしくお願いします。どうもありがとうございます。
私の割り当てでは、次のようなプリミティブ関数を作成する必要があります。
私の質問は、Prim Eq、Prim Less、Prim Greatは、文字列、数値などのあらゆる種類のパラメーターを受け取ることができるはずですが、その戻り型は常にブール値です...したがって、型aとbを指定する方法がわかりません。
これにアプローチする方法を知っているなら、私に知らせてください。よろしくお願いします。どうもありがとうございます。
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
はありません。それらは値です。ここで何を指定したいのかわかりません。
あなたが見たいのはGADTです。ただし、関数を使用できない場合もありますが、コンストラクターに型シグネチャをprim
追加できれば、型の安全性を高めることができます。たとえば、これを行う方法はGADTです。Eq :: Value a -> Value a -> Value Bool