1
我想定義表示一單位向量類型。限制類型的值在榆樹
這是我目前:
type UVec = UVec Float Float
unit : Float -> Float -> UVec
unit a b =
let
norm = sqrt (a^2 + b^2)
in
UVec (a/norm) (b/norm)
雖然unit
得到我想要的東西,我沒有確保UVec
總是在程序的其它部分的單位向量方法。例如,我可以寫這樣的事:
wrong = UVec 100 200
,它會編譯就好了。
有沒有什麼辦法讓unit
功能UVec
類型的唯一構造?或者通過某種方式來限制UVec
的值?
或許你可以在一個單獨的模塊,你'UVec'類型和'unit'功能,出口只有'unit'功能,所以這是唯一的其它模塊可以看到 – marcosh