我在Haskell中編寫了一個數學模型Vector
。Haskell數據類型別名命名
於是我開始了:
data Vector a = Vector !a !a !a deriving (Eq, Show)
精細這讓我用我想要的任何數值數據類型。問題在於,我不想寫任何地方的Double
和Vector Double
,原因很簡單,我不需要。所以,我想補充:
type Scalar = Double
type Vector = Vector Scalar
課程,第二行是錯誤的,因爲現在也有Vector
兩個聲明,但。那麼我應該怎樣改變它呢?我想,對我來說,不,我會把它寫到我的代碼中,所以我想簡單地把類型別名保留爲Vector
。這意味着我必須更改數據類型名稱。但是,如果我改變了這一點,那麼我覺得我也應該改變構造函數,這會讓一切變得更加混亂。但是,如果感覺很尷尬,使得構造函數與這種類型別名具有相同的名稱。
現在我有這樣的:
type Scalar = Double
type Vector = VectorT Scalar
data VectorT a = Vector !a !a !a deriving (Eq, Show)
我拿起T
任意(我猜它的意思是「型」),但我不敢肯定這一點。通常情況下,當我記錄功能,我會說-- Calculate the magnitude of a Vector
,但VectorT
我覺得我真的應該使用是類型名稱。所以我只是把它們稱爲vectors
(不是大寫) - 除此之外,我覺得我必須將這個約定應用於每種數據類型的每條評論。
有沒有人有過類似的情況?任何人都可以在這種情況下想到更優雅的解決方案?
我已經看到過幾次,特別是'language-c'包使用這種方法來定義它的語法樹表示。如果你從來沒有遇到過這種風格,那麼它可能會感覺有點尷尬,但我希望人們能夠很快習慣它。 – 2012-07-08 05:13:31
計算機科學只有兩件難事:緩存失效和命名事物。 - 菲爾卡爾頓 – 2012-07-08 06:16:40
也許'VectorOf Double',如果你不喜歡'VectorT'。 – kennytm 2012-07-08 08:30:19