module p1=
let rec fn n acc = ...
let result = fn 999 0
同じ名前空間で別のモジュールから呼び出されます。 fnはintをintで返します。後者の場合は、(1)...制御が戻って、それがハングアップコンソールに行くしない理由モジュールの結果がコンソールアプリケーションをハングする
これは、いずれの場合に動作します...
let fnMatchProblem = function
| 0 -> "Good bye."
| 1 -> (p1.fn 999 0).ToString()
しかし、ここでは、私が把握することはできません。他の目的のために
let fnMatchProblem = function
| 0 -> "Good bye."
| 1 -> p1.result.ToString()
または
let fnMatchProblem = function
| 0 -> "Good bye."
| 1 -> (p1.result).ToString()
、私は常にint型を返すために、P1を持っていることを好むだろう。 p1.resultの理由は、あらかじめ定義された入力を持つためです。
編集1: 私はそれを絞り込んだ。 かかわらずと呼ばれるモジュールの、すべてのモジュールが実行されている。この形式では20個のモジュールの各...
module p<n>=
let function param = ...
let result = function param
があります。したがって、アプリはぶら下がっていませんが、すべてのモジュールを実行するのに非常に時間がかかります。奇妙なことに、返される結果は実行のために実際に選択されたモジュールからのものです。
EDIT 2 ... Vandroiyの解像度...ありがとう:
let fnMatchProblem = function
| 0 -> "Good bye."
| 1 -> p1.result()
module p1=
let rec fn n acc = ...
let result() = fn 999 0 |> string
私の推測では、p1モジュールのバグです。無限ループなどを作成したかどうかを確認するために数値を返すように結果を変更してみてください –
再生できません。 [最小限の、完全で検証可能な例](http://stackoverflow.com/help/mcve)を投稿してください。 –