例えば、私は型クラスを持っている:Haskellでは、部分的に適用されたマルチパラメータ型クラスのデフォルト実装を提供することは可能ですか?
class MyClass a b c where
fun01 :: a -> b
fun02 :: a -> c
fun03 :: a -> b -> c ->()
fun04 :: a -> WhatEver
私は私のためのデフォルトの実装を提供したい、のは、それが自己とfun01
とfun02
の面でfun03
の実装を定義するBaseDataType
それを呼びましょう。私はちょうどこのようfun01
とfun02
を提供したい
class MyClass BaseDataType b c where
fun03 = fun01 <$> fun02 ...
fun04 = fun02 ...
そして、私のクラスのインスタンスを確定し、fun03
とfun04
のためのすべての定型的なコードを避けるために、より:
instance MyClass BaseDataType Int Char where
fun01 = 1
fun02 = 'C'
それから私はこのような何かを持っていると思います
この種の動作を可能にする言語拡張がありますか?私はこのトピックについて何も見つけることができませんでした。
1のようなDefaultSignaturesを使用することができますが、デフォルトではなく、単に 'MyClassのBaseDataType'ため_for ALL_' MyClass'インスタンス、ですので、私は、これはOPのためにusuableで数えるません専門化。 (他のケースでは、既定の実装では、カスタムインスタンスを置き換える必要があることを示すために、あいまいな型のエラーが表示されます)。 – leftaroundabout