我正在尝试在 Dhall 中定义多态类型。在 Haskell 中,它看起来像:
data MyType a = Some a | SomethingElse
为此,我在 Dhall (mkMyType.dhall) 中定义了这个函数:
let SomethingElse = ./SomethingElse.dhall in λ(a : Type) → < some : a | somethingElse : SomethingElse >
我还定义了一个函数,它返回该类型的构造函数,给定一个 (./mkMyTypeConstructor.dhall):
λ(a : Type) → constructors (./mkMyType.dhall a)
现在,为了使用它,我需要执行以下操作:
(./mkMyTypeConstructor.dhall Text).some "foo"
这是正确的方法吗?
最后,在我的用例中最理想的类型是对诸如“foo”之类的文本和自定义类型(例如 { somethingElse: {} })进行类型检查。这可能吗?