a
にはFoldable
の容器があります。 BasicPrelude
の型名でFoldable
が提供するメソッドの1つはelem :: (Eq a) => a -> t a -> Bool
です。さて、私のコンテナでは、a
がOrd
インスタンスである場合のデフォルトよりも効率的にelem
を実装できますが、その場合にのみです。aの型クラスに基づいてFoldableインスタンスメソッドを特殊化できますか?
可能であれば、より効率的にelem
を利用したいと考えています。好ましくは、同じ署名(つまり、「透過的」)を使用します。しかし、私はこれを行う1つの方法しか見ることができません。これは、コンテナのインスタンスで(Ord a)
という制約を必要とすることです。これは一般的な意味では意味がありません。
a
がOrd
で、何とか他のものが一般的にの場合にのみ、私は特殊なelem
を使用できますか? GHCの拡張機能を使用しても問題ありません。
おそらくGHC 'RULES'プラグマを使用して、あまりにも特定のタイプを特化することはおそらくありません。これは...確かな賭けではありません。 – dfeuer