在idris中,如何约束代数数据类型中的参数类型?
在haskell,我会做的:
data Foo = Bar {x :: Integer, str :: String}
我可以在伊德里斯那样做吗?
答案 0 :(得分:4)
有两种选择:数据类型
data Foo = Bar Int String
或记录
record Foo : Type where
Bar : (x : Int) -> (str : String) -> Foo
两者都有一些限制:在数据类型的情况下,您没有命名访问者,如果是记录,您只能有一个构造函数。
您可以在{{3>}的 3.2数据类型和 3.11相关记录
部分找到有关数据类型和记录的更多信息