1

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

class Test a b

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

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

4

1 回答 1

3

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

但是你所问的也是可能的,使用约束包。

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

import Data.Constraint.Forall

class Test a b

test :: Forall (Test a) => a -> a
test = undefined
于 2013-01-09T15:09:18.437 回答