0
PPTの拡張機能などを使用して、機能の更新構文{ record with key = value }
をネストされたレコードで使用する方法はありますか?OCaml関数の更新でネストされたレコード
たとえば、次の例のプログラムでは、「内側の」ターゲットを実際にターゲットにしたいとき、最も外側のレコードのみを機能的に更新しています。
type outer = {
a : float;
b : inner
}
and inner = {
c : float;
}
let item = { a = 0.4; b = { c = 0.7 } }
let() = ignore { item with b = { c = 0.8 }
inner
に複数のフィールドがあるとあまり便利ではありません。
私は、次の(strawman構文)のようなものを書くことができるようにしたいと思います:
let() = ignore { item with b.c = 0.8 }
ある意味では、答えは「いいえ」と思われます。 '{key with value} 'の' key'のように聞こえるのは、単一のフィールドだけで、 'key'の位置にもっと多くの種類のものを許可する一般的な拡張はありません...おそらくこのような複数の機能的な更新を行うことができます。 –
はい、ストレートOCamlの文法では、 'with'の後に*フィールド*が必要です。これは、(レコードタイプが定義されている)モジュールを含む名前の前に単一の識別子がある可能性があります。 –