具有接口约束的Idris相关记录在Type Constructor参数上

时间:2017-11-21 17:12:54

标签: idris type-constraints

是否可以在idris中对依赖记录的类型构造函数的参数进行接口约束? 假设我有一个界面Show : Type -> Type。现在我需要在以下依赖记录上设置约束:

record Source s where
   constructor MkSource
   initial : s

我需要对参数s设置约束,以便它始终是Show的实例。怎么做到这一点?

1 个答案:

答案 0 :(得分:1)

Idris正在大力发展,但根据最近发送给idris组的电子邮件,记录语法目前不支持使用界面约束类型:

https://groups.google.com/forum/#!topic/idris-lang/HMeTylslyFc

您需要使用数据类型语法,例如

module Main

data Source: Type -> Type where
    MkSource: Show s => s -> Source s


x: Source Int
x = MkSource 3

showSource: Source s -> String
showSource  (MkSource x) = show $ x

testMe: (showSource $ Main.x = "3")
testMe = Refl