fsx ファイルをロード + リロードするための推奨される方法は何ですか? ただ実験中...はいはい正しい言語正しい仕事など..
FSI で次のことができる方法が気に入っています。
#load "script.fsx";
open Script
> let p = script.x 1
Error: This expression was expected to have type string but here has int...
(* edit script.fsx x to make it int -> int *)
>
> #load "script.fsx"
> let p = script.x 1
val it : int = 2
しかし、fsi blah.fsx を介して実行しているアプリケーションに対してこれを行うにはどうすればよいでしょうか。多分whileループに座っている何か。#load と #use を let または module 内に置いてはいけないようです。つまり、let reload script = #load script のように #load を使用することはできません。
私の元の方法は、何かを追加/修正するたびに .fs ファイルを作成し、再コンパイル + 再起動することでした。この方法は原始的な感じがします。
2番目の方法は、モジュール内で #load ディレクティブを使用しようとすることでしたが、機能しないことが判明しました(スコープの観点からは理にかなっています)...
module test1 =
#load @"C:\users\pc\Desktop\test.fsx"
open Test
module test2 =
...
もう 1 つの方法は、fsi module.fsx にプロセス診断をロードして、すべてのモジュールに新しいプロセスを作成することですが、これは恐ろしく、非効率的で、ひどいものに思えます。
これは .NET 内では些細なことではないだろうと心の奥底で感じていますが、とにかく質問をしたいと思います。彼らのコードをコピーするには)?
TL;DR erlang について次の記事を読み、F# で自分用に使いたいと思います。 Erlang: rebar を使用して、変更されたモジュールを既に実行中のノードに再ロードする方法はありますか?
「...プログラム内のモジュールがディスク上で変更されるたびに、リローダーは実行中のコピーを自動的に置き換えます。」