我想编写接受类型值的函数,该函数具有多参数类型类的实例以及每种类型。像这样的东西(test
函数签名是非法的):
class Test a b
test :: forall a. (forall b. Test a b) => a -> a
有没有办法表达这种限制?
我想编写接受类型值的函数,该函数具有多参数类型类的实例以及每种类型。像这样的东西(test
函数签名是非法的):
class Test a b
test :: forall a. (forall b. Test a b) => a -> a
有没有办法表达这种限制?
根据您要实现的目标,可能会有更好的解决方案。
但是你所问的也是可能的,使用约束包。
{-# LANGUAGE FlexibleContexts, ConstraintKinds, MultiParamTypeClasses #-}
import Data.Constraint.Forall
class Test a b
test :: Forall (Test a) => a -> a
test = undefined