GADT和平等的证明

时间:2016-01-06 16:09:36

标签: haskell types gadt

我想在GADT中隐藏一些类型信息,这里忘记了public bool Process() { if (hasError()) return false; //Metadata analysis code that may write errors //Note that error log may change here return !hasError(); //updated by juharr } 类型

key

如何传递一些相等约束以在其他地方使用它,如:

data Query  where
   Query :: Ord key =>  Map.Map key String  -> Query

 one ::  Ord key => key -> Query
 one  k =
   let m = Map.insert k "hello" Map.empty
   in Query m

1 个答案:

答案 0 :(得分:1)

- 左下角1月6日17:19

如果你只是保持类型变量可见 - 但是普遍量化 - 那么其他人也必须抽象地对待它,但是当你想要访问它并应用你周围的任何约束时它仍然存在。 - 如果你实际上有一个全局证明所有键具有相同的类型,那么你根本不应该把它变成一个变量。如果您只有两到三种类型(并且不打算允许更多类型),您也不应该使用类型变量,而是使用具有不同实例的离散选项的变体类型。