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