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數據構造函數有約束? –
@RananvanDalen不,沒有辦法直接向構造函數添加約束。並沒有什麼實際意義,因爲在字段約束和「構造函數」約束之間沒有語義差異。只有語法差異。 – Shersh