で定義されています。モジュール外でオープンユニオンを使用している場合は、
module Account = struct
type account_type = Current of float | Savings of float
end
let sarah = Account.Current 100.0;;
最後の行ではError: syntax error
が生成されますが、
module Account = struct
type 'a account_type = [> `Current of float | `Savings of float ] as 'a
end
let pete = Account.`Current 100.0;;
つまり、モジュールを開くことなくモジュール外にオープンユニオンタイプを使用できないのはなぜですか?私は私が見つけたと言うべきであるに最後の行を変更:
open Account;;
let pete = `Current 100.0;;
が正常に動作しますが、私は多くのことをaccount_type
使用している場合、明らかにこれは厄介であるか、あるいは私は、任意のコードの先頭にAccount
を開く必要がありますここではaccount_type
が使用されています。つまり、署名を使用して抽象化を犠牲にすることを意味します。Account
INRIAのドキュメントとOCamlのチュートリアルをいくつか調べました。どのようにこれを行う。
account_type
を使用するたびにモジュールを開く必要はありませんか? 2番目の例では、事前に
おかげで、
ザック
ああ、私はバックティックでバックティックをエスケープしようとしたため、関係するすべての人に多大な混乱を引き起こしました。 – nlucaroni