Ví dụ, tôi có một lớp học loại:Trong Haskell, có thể cung cấp triển khai mặc định cho lớp loại đa param được áp dụng một phần không?
class MyClass a b c where
fun01 :: a -> b
fun02 :: a -> c
fun03 :: a -> b -> c ->()
fun04 :: a -> WhatEver
tôi muốn cung cấp một cài đặt mặc định cho tôi, chúng ta hãy gọi nó BaseDataType
trong đó xác định việc triển khai của fun03
về nó tự và fun01
và fun02
. Sau đó, tôi muốn có một cái gì đó như thế này:
class MyClass BaseDataType b c where
fun03 = fun01 <$> fun02 ...
fun04 = fun02 ...
Và hơn để hoàn thiện dụ lớp học của tôi và tránh tất cả các mã soạn sẵn cho fun03
và fun04
tôi chỉ cung cấp fun01
và fun02
như thế này:
instance MyClass BaseDataType Int Char where
fun01 = 1
fun02 = 'C'
Có thể một số phần mở rộng ngôn ngữ cho phép loại hành vi này không? Tôi không thể tìm thấy bất cứ điều gì về chủ đề này.
+1, nhưng tôi không nghĩ đây là usuable cho OP vì mặc định là _for ALL_ 'trường MyClass', không chỉ cho môi trường 'MyClass BaseDataType' chuyên môn hóa. (Trong các trường hợp khác, việc triển khai mặc định sẽ chỉ cung cấp một lỗi loại tối nghĩa là để chỉ ra rằng một cá thể tùy chỉnh phải được thay thế.) – leftaroundabout