Source

ocaml-zippy-tutorial-in-japanese / one-data-type-one-module.rst

Diff from to

File one-data-type-one-module.rst

 * 一々 employee employee, product product 書くの面倒くさい
 * 統一感がない。salary も employee_salary、 price も product_price にすべき
 
-確かに、これでは r.employee_name, r.product_id, employee_to_string, product_to_string と書くことになります。OCaml のレコードは単相ですし、値は overloading が無いので名前を被せることができないのですね。え? 
+確かに、これでは r.employee_name, r.product_id, employee_to_string, product_to_string と書くことになります。OCaml のレコードは単相ですし、値は overloading が無いので名前を被せることができないのですね。 
 
 このコード、「1モジュール1データ型スタイル」で書きかえると次のようになります。::
 
 
     open Employee  (* 以降、 r.name, r.id, to_string は Employee.t の操作の事になる *)  
     
-いや待て、そもそも employee と product は同じモジュールで定義されている、つまり混ぜて使う事を想定されているのだから、open Employee と open Product は同時には使えないではないか。うむ、たしかに。open を二つ並べると、後の open の名前の方が優先されます。しかしそういう場合は local open を使えばよい。名前空間の操作がローカルに調整できます。::
+いや待て、そもそも employee と product は同じモジュールで定義されている、つまり混ぜて使う事を想定されている。open Employee か open Product は同時には使えないではないか。うむ、たしかに。open を二つ並べると、後の open の名前の方が優先されます。前の open の効力は無くなる。しかしそういう場合は local open を使えばよい。名前空間の操作がローカルに調整できます。::
 
     let fire e = 
       let open Employee in (* fire 関数中のみ、Employee を書かなくてよくなる *)