5

C# には組み込みの行列関数はありませんが、F# パワーパックにはあります。

サード パーティやオープン ソースの C# ライブラリを使用するのではなく、F# で独自のものを作成し、有用なビットを C# に公開することを考えています。

誰かがすでにこれを考えているか、試してみたかどうか、そしてそれが良い考えかどうか疑問に思いました.

クラスまたは静的関数のロードとして公開する必要がありますか?

または、C# ラッパー クラスを作成し、それを F# に呼び出す必要がありますか? または、F# で C# クラスを入力と出力として使用しますか?

何かご意見は?

以下のHathに感謝します: F# ライブラリを C# で直接使用できます (演算子も!):

using System;
using System.Text;
using Microsoft.FSharp.Math;

namespace CSharp
{
  class Program
  {
    static void Main(string[] args)
    {

        double[,] x = { { 1.0, 2.0 }, { 4.0, 5.0 } };
        double[,] y = { { 1.0, 2.0 }, { 7.0, 8.0 } };
        Matrix<double> m1 = MatrixModule.of_array2(x);
        Matrix<double> m2 = MatrixModule.of_array2(y);
        var mp = m1 * m2;

        var output = mp.ToArray2();
        Console.WriteLine(output.StringIt());

      Console.ReadKey();
    }
  }

  public static class Extensions
  {
    public static string StringIt(this double[,] array)
    {
      var sb = new StringBuilder();
      for (int r = 0; r < array.Length / array.Rank; r++)
      {
          for (int c = 0; c < array.Rank; c++)
          {
              if (c > 0) sb.Append("\t");
              sb.Append(array[r, c].ToString());
          }
          sb.AppendLine();
      }
      return sb.ToString();
    }
  }
}
4

2 に答える 2

6

C# で必要な f# ライブラリを参照して直接使用することはできませんか?

FSharp.Core.dll を参照して、同様のことを行いました。

Microsoft.FSharp.Math.BigInt class.

したがって、おそらく FSharp.PowerPack.dll を参照して、

Microsoft.FSharp.Math.Matrix<A> class
于 2008-11-07T14:36:08.893 に答える
0

XNA Framework には非常に優れた Matrix クラスがあります。その dll を参照するか、ほとんどの場合リフレクターを使用して、コードをコピーして自分のソリューションに貼り付けます。あなたの質問に直接答えないことは知っていますが、別のアイデアです....

于 2008-11-07T13:35:43.930 に答える