3

在 idris 中,如何约束 Algebraic Data Type 中的参数类型?

在haskell,我会这样做:

data Foo = Bar {x :: Integer, str :: String}

我可以在伊德里斯这样做吗?

4

1 回答 1

5

有两种选择:数据类型

data Foo = Bar Int String

或记录

record Foo : Type where
  Bar : (x : Int) -> (str : String) -> Foo

两者都有一些限制:对于没有命名访问器的数据类型,对于记录,您只能有一个构造函数。

您可以在Idris 教程的第3.2 节数据类型3.11 依赖记录中找到有关数据类型和记录的更多信息

于 2014-07-27T12:30:30.860 回答