スカラー値(例えば、整数または文字列)を実際の値または何らかのNA
値で表現し、後でそれらを コレクション(例えばリスト)に格納したいとします。目的は、欠損値を処理することです。これを行うにはOCaml複数の型を持つシグネチャ
は、私は今、私はScalar
Sが含まれて心の中でいくつかの多型Vector
タイプを持って署名
module type Scalar = sig
type t
type v = Value of t | NA
end
を実装しています。基本的には次のうちのいくつか
module Make_vector(S: Scalar) = struct
type t = S.v list
... rest of the functor ...
end
しかし、私はこれを動作させることはできません。
module Int_vector = Make_vector(
struct
type t = int
end
)
module Str_vector = Make_vector(
struct
type t = string
end
)
... and so on for some types.
私はまだOCamlとはあまり働いていないので、これは正しい方法ではないかもしれません。どのようにsum型の多相スカラを実現するかについてアドバイスしていますか?
コンパイラは、常に次のようなメッセージで応答する前に
The parameter cannot be eliminated in the result type.
Please bind the argument to a module identifier.
、私は、和型としてScalar
を実装しようとしましたが、原因巨大なmatch
条項にいくつかの機能を実現する際 複雑さの問題に遭遇してきました。もう1つのオプションはoption
です。これはより良い戦略ですか?
これについては考えていません。今それは動作します。ありがとう:) – teekay