Zum Beispiel habe ich eine Art Klasse:Ist es in Haskell möglich, eine Standardimplementierung für eine partiell angewendete Klasse mit mehreren Parametern bereitzustellen?
class MyClass a b c where
fun01 :: a -> b
fun02 :: a -> c
fun03 :: a -> b -> c ->()
fun04 :: a -> WhatEver
ich für meine eine Standardimplementierung bieten möchten, lassen Sie uns es BaseDataType
nennen, die Implementierungen von fun03
in Bezug auf sie selbst und fun01
und fun02
definiert. Dann würde ich so etwas wie dieses:
class MyClass BaseDataType b c where
fun03 = fun01 <$> fun02 ...
fun04 = fun02 ...
Und als meine Klasseninstanz abzuschließen und vermeiden alle Standardcode für fun03
und fun04
ich nur fun01
und fun02
wie diese bieten würde:
instance MyClass BaseDataType Int Char where
fun01 = 1
fun02 = 'C'
Gibt es möglicherweise eine Spracherweiterung, die diese Art von Verhalten ermöglicht? Zu diesem Thema konnte ich nichts finden.
+1, aber ich weiß nicht zu rechnen dies für die OP usuable ist, da der Standard _for ist all_ 'MyClass' Instanzen, nicht nur für die' MyClass BaseDataType' Spezialisierung. (In anderen Fällen führt die Standardimplementierung nur zu einem obskuren Fehler, der angibt, dass eine benutzerdefinierte Instanz ersetzt werden muss.) – leftaroundabout