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 に答える