我想编写接受类型值的函数,它具有多参数类型类的实例以及每个类型。这样的事情(test
功能的签名是非法的):
class Test a b
test :: forall a. (forall b. Test a b) => a -> a
有没有办法表达这种限制?
答案 0 :(得分:3)
根据您的目标,可能会有更好的解决方案。
但您可以使用constraints包来提问。
{-# LANGUAGE FlexibleContexts, ConstraintKinds, MultiParamTypeClasses #-}
import Data.Constraint.Forall
class Test a b
test :: Forall (Test a) => a -> a
test = undefined