在haskell中使用forall量词进行谓词?
Posted
技术标签:
【中文标题】在haskell中使用forall量词进行谓词?【英文标题】:Predicate with forall quantifier in haskell? 【发布时间】:2013-01-09 14:48:41 【问题描述】:我想编写一个接受类型值的函数,它具有多参数类型类的实例以及 every 类型。像这样的东西(test
函数的签名是非法的):
class Test a b
test :: forall a. (forall b. Test a b) => a -> a
有没有办法表达这种限制?
【问题讨论】:
不,没有。但也许你可以解决它;你能给我们一个你想要达到的目标的小例子吗?也许你可以只使用一个单参数类型类,它的方法可以普遍量化现在你的类的第二个参数是什么? 【参考方案1】:根据您要达到的目标,可能会有更好的解决方案。
但您的要求也是可能的,使用 constraints 包。
-# LANGUAGE FlexibleContexts, ConstraintKinds, MultiParamTypeClasses #-
import Data.Constraint.Forall
class Test a b
test :: Forall (Test a) => a -> a
test = undefined
【讨论】:
以上是关于在haskell中使用forall量词进行谓词?的主要内容,如果未能解决你的问题,请参考以下文章
翻译/编码 Haskell 的 `data Obj = forall a. (显示 a)=> Scala 中的 Obj a`