2010-11-29 10 views
5

相互再帰型([<Struct>])を異なるファイルに分散することは可能ですか?型は名前空間のすぐ下にあります。私の相互再帰型を整理する

私の解決方法は、1つの大きなファイルに入れて、type ... and ... and ... etcの構造を使用することです。それは唯一の方法ですか?

答えて

13

再帰的ノットを解消する手法を使用することができます。

ので、この:

type a = B of b 
and b = A of a 

は次のようになります。答えを

type 'b a = B of 'b 
type b = A of b a 
+0

感謝を。この種のテクニックはしばしば使われますか?私は、F#デザインガイドラインがすべてを1つの大きなファイルに入れることを推奨していると感じています。 – Stringer

+0

私は頻繁にそれを頻繁に使用し、彼らが頻繁にそれを使用することを私達の顧客に推薦する、はい、それは過小評価されるようである。 –

+0

「再帰的結び目を解く」は、関数をメモしようとするときに非常に便利です。 * http://typeocaml.com/2015/01/20/mutable/の置換*が必要な場合に記述されています。 –