我目前得到的代碼下面這個模式:從多個實例中移除重複報關單
f1' x1 x2 .. xm1 = ...
f2' x1 x2 .. xm2 = ...
.
.
,
fn' x1 x2 .. xmn = ...
instance C D1 where
f1 = f1'
f2 = f2'
.
.
.
fn = fn'
instance C D2 where
f1 = f1'
f2 = f2'
.
.
.
fn = fn'
.
.
.
instance C DN where
f1 = f1'
f2 = f2'
.
.
.
fn = fn'
基本上,我已經得到了我想要實現的一些數據類型的一類,但所有這些實現一樣。但是在實例實現中有很多重複代碼,對於m
函數和n
實例,我必須編寫大致O(m*n)
代碼行,我寧願它更像O(m+n)
。
有沒有一種很好的方法來消除重複?我想像模板哈斯克爾會做的伎倆,但我不想重新發明輪子,如果處理這個問題已經存在。
如果他們都是一樣的,你就不能提供默認的實現? – Zeta
我不能那麼傷心,我不控制這個類(在我的例子中'C'實際上是'Enum')。 – Clinton
不是抽象的例子,你可以添加兩個類型以及你的函數嗎? – Zeta