我讀過關於Haskell記錄的一些問題,尤其是同一模塊中的兩個元素不能具有相同的名稱。Haskell記錄,更清潔的方法?
我明白你可以解決此通過具有獨立的模塊,但我並不想這樣做,而是嘗試這種方法:
class HasX a where
x :: a -> X
data D1 = D1 { d1_x :: X, ... }
instance HasX D1 where
x = d1_x
data D2 = D2 { d2_x :: X, ... }
instance HasX D2 where
x = d2_x
(這不僅得到,沒有套,我當然需要編寫更多的代碼來做套)。
但是,似乎所有這些的類和實例聲明看起來像樣板文件,應該能夠使用模板haskell或其他東西來消除。
是否有一個GHC的庫或擴展,使這種方法寫得不那麼混亂?
是的,哎呀。固定。 – Clinton
這比這更復雜一點,因爲這兩個字段可能不具有相同的類型。 – augustss
出於我的目的,假定具有相同名稱的字段具有相同的類型。我不會有具有不同類型的相同名稱的字段。 – Clinton