मैं निम्नलिखित typeclass जो मॉडल एक SQL जैसी क्वेरी अनुकूलन:उदाहरणों और प्रकार कार्यों हास्केल ओवरलैपिंग
class OptimizableQuery q where
type Optimized q :: *
optimize :: q -> Optimized q
instance Query q => OptimizableQuery q where
type Optimized q = q
optimize q = q
instance (Query q, OptimizableQuery q) => OptimizableQuery (Select (Select q p) p) where
type Optimized (Select (Select q p) p) = Select (Optimized q) p
optimize (Select (Select q _) p) = Select (optimize q) p
समस्या यह है कि मैं त्रुटि अनुकूलित प्रकार समारोह पर "विरोधी परिवार उदाहरण घोषणाओं" हो जाता है। वह क्यों है और मैं इसे कैसे हल कर सकता हूं? सभी मामलों को निकालने के बजाय वास्तव में "फॉलबैक इंस्टेंस" होना अच्छा लगेगा (जो बहुत अधिक हो सकता है) ...
मैं इसके आसपास कैसे काम करूं? –
मैं सभी मामलों को समाप्त करने के अलावा किसी भी कामकाज के बारे में नहीं सोच सकता। माफ़ कीजिये! –