2

次のように書きたいと思います。

module A =
  type Token 
  let foo Token = 

module B =
  type Token 
  let foo Token = 

let run (m : module) =
  m.B
  |> m.foo

基本的にモジュール内で一般的な関数です。F# でこれを行う方法はありますか?

4

1 に答える 1

3

kvb がコメントで指摘したように、実際に何をしようとしているのかによって最適なアプローチが異なるため、現実的な例がなければ答えを出すのは困難です。

この簡単な例では、おそらく F# インターフェイスを使用してメンバーを表しToken、追加Fooします。Fooが を返すと仮定するとint、次のように定義を記述できます。

type Token = 
  abstract Foo : unit -> int

次に、クラス (非常に重い) またはオブジェクト式を使用して、さまざまなトークンを実装できます。例えば:

let tok = { new Token with
              member x.Foo () = 42 }

関数に対応するコードは、メンバーrunの単なる呼び出しです。Footok.Foo()

于 2012-04-19T23:06:58.270 に答える