我有一個類型定義構造函數NEWTYPE
class IntegerAsType a where
value :: a -> Integer
data T5
instance IntegerAsType T5 where value _ = 5
newtype (Num a, IntegerAsType n) => PolyRing a n = PolyRing [a]
我環顧四周,換一種方式來指定NEWTYPE的構造。我意識到只能有一個,但我不明白爲什麼我可以指定它是什麼。
例如,我可能只想將參數的前三個元素帶到PolyRing
值構造函數中。
我試着在newtype聲明的結尾處使用where
子句添加,但沒有編譯。
我也嘗試:
(PolyRing xs) = PolyRing [2, 3, 5, 7]
作爲玩具的例子。我認爲這應該做的是忽略值構造函數的參數,並始終具有值[2,3,5,7]
。代碼編譯,但我的「自定義」構造函數沒有效果。
是否可以指定新類型的構造函數?
我不明白這個問題。當你執行'newtype PolyRing a n = PolyRing [a]'時,你指定了構造函數。如果你想調用構造函數,可以使用'newtype PolyRing a n = SomethingElse [a]'。 – sepp2k
我不想重命名它,我想在施工過程中做某些事情。確切地說, – crockeea