【发布时间】:2011-04-24 06:13:17
【问题描述】:
我最近一直在玩 RankNTypes,想知道是否可以使用它们 在实例声明中。
这是一个使用开放数据类型的简单示例
data (Expr a, Expr b) => Add a b = Add a b deriving(Show)
instance (Expr a, Expr b) => Expr (Add a b)
instance (Evaluation a, Evaluation b) => Evaluation (Add a b) where
eval (Add x y) = eval x + eval y
在这里我必须写出像(Evaluation a, Evaluation b)这样的约束,但基本上我只想写像(forall a.Evaluation a)这样的东西。这甚至可能吗?
问候, 雷乔
【问题讨论】:
标签: haskell types type-systems higher-rank-types