2
Idrisにレコードを書き込もうとしていますが、これは汎用のパラメータを持ち、インターフェイスで制約を受ける必要があります。私は書くことができ、通常の労働組合・タイプの場合:Idrisでレコードタイプを制限する
data BSTree : (a : Type) -> Type where
Empty : Ord a => BSTree a
Node : Ord a => BSTree a -> a -> BSTree a
が、私はちょうどレコードと、同じことを行うための構文を把握しようとしています。私は次のようなものを試しました:
record Point a where
constructor MkPoint : Eq a => a -> a -> Point a
x : a
y : a
コンパイルしません。
Idrisでこれを行う方法はありますか?
TIAは
ありがとうございました。私はあなたがフィールドに直接制約を加えるべきではないことを知っています*。そのため私のレコードの例では、制約をMkPointデータコンストラクタに追加しようとしました(これは、私がunion型に対して行っていることです)。 MkPointデータコンストラクタに制約を設ける方法はありませんか? –
@RouanvanDalenいいえ、コンストラクタに直接制約を追加する方法はありません。フィールドに制約があり、 'コンストラクターに制約があることには意味の違いがないため、実際の意味はありません。構文上の違いのみ。 – Shersh