2010-01-18 109 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