我只想
class Trivial t
instance Trivial t
这在 Haskell 98 中当然是没用的,因为你可以省略约束;但是ConstraintKinds
我们可以明确要求 kind 参数* -> Constraint
。理想情况下,我只想将其定义为“匿名类型级函数” \type a -> ()
,但这显然是不可能的。
我应该怎么做,使用预定义的东西,或者只是在我需要的地方定义该类(因为没有人需要访问它,因为实例是通用的,这似乎也很好)?
我只想
class Trivial t
instance Trivial t
这在 Haskell 98 中当然是没用的,因为你可以省略约束;但是ConstraintKinds
我们可以明确要求 kind 参数* -> Constraint
。理想情况下,我只想将其定义为“匿名类型级函数” \type a -> ()
,但这显然是不可能的。
我应该怎么做,使用预定义的东西,或者只是在我需要的地方定义该类(因为没有人需要访问它,因为实例是通用的,这似乎也很好)?
由于这似乎很受欢迎,我终于将这样一个琐碎的约束类推到了 Hackage 包中。
import Data.Constraint.Trivial
id' :: Unconstrained t => t -> t
id' = id