2010-01-18 43 views
2

我一直在玩NEWTYPE包裝我的索引來避免錯誤,我有一些像這樣的代碼:派生類型及其依賴

{-# LANGUAGE GeneralizedNewtypeDeriving #-} 

newtype PersonIdx = PersonIdx Int 
    deriving (Enum, Eq, Integral, Num, Ord, Real, Show) 

爲了得到Integral,必須得到其所有的依賴關係好(因此上面的類型列表)。

有沒有辦法讓它得到所有的依賴項Integral?我想像這樣:

newtype PersonIdx = PersonIdx Int 
    deriving (Integral(..)) 

回答

6

不,沒有捷徑。你必須明確地從所有的依賴類型派生得到,但是可以通過在ghci中輸入:i Integral來輕鬆地找到它們。

+2

我在想這是否有一個原則性的原因,或者根本就沒有人實施過這個捷徑。 – Novelocrat 2010-01-18 18:03:06

+0

@Dario:雖然人們可能會創建一些TH快捷方式.. – yairchu 2010-01-18 20:26:19

+0

在Haskell的哲學中有一點是明確的。語言中有很少的「捷徑」,這個例子也不例外。 – Martijn 2010-01-19 10:15:45