単位ベクトルを表す型を定義したいと思います。Elmの型の値を制限する
これは私が現在持っているものです。
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
の値を制限する何らかの方法ですか?
、および'unit'関数だけをエクスポートして、他のモジュールが見ることができる唯一のものです – marcosh