【问题标题】:Predicate with forall quantifier in haskell?在haskell中使用forall量词进行谓词?
【发布时间】:2013-01-09 14:48:41
【问题描述】:

我想编写一个接受类型值的函数,它具有多参数类型类的实例以及 every 类型。像这样的东西(test 函数的签名是非法的):

class Test a b

test :: forall a. (forall b. Test a b) => a -> a

有没有办法表达这种限制?

【问题讨论】:

  • 不,没有。但也许你可以解决它;你能给我们一个你想要达到的目标的小例子吗?也许你可以只使用一个单参数类型类,它的方法可以普遍量化现在你的类的第二个参数是什么?

标签: haskell typeclass forall multiparameter


【解决方案1】:

根据您要达到的目标,可能会有更好的解决方案。

但您的要求也是可能的,使用 constraints 包。

{-# LANGUAGE FlexibleContexts, ConstraintKinds, MultiParamTypeClasses #-}

import Data.Constraint.Forall

class Test a b

test :: Forall (Test a) => a -> a
test = undefined

【讨论】:

    猜你喜欢
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多