C#에는 내장 된 행렬 함수가 없지만 F # 파워 팩에 있습니다.F #을 사용하여 C#에서 사용할 수있는 매트릭스 어셈블리 만들기
제 3 자 또는 오픈 소스 C# 라이브러리를 사용하는 대신 F #에서 내 자신을 굴려서 유용한 비트를 C#에 노출시키는 것에 대해 궁금합니다.
누구나 이미이 문제를 생각하거나 시도했는지, 그리고 좋은 생각인지 궁금합니다.
클래스 또는 정적 함수로드로 노출해야합니까?
아니면 C# 래퍼 클래스를 만들고 F #으로 전화를해야합니까? 또는 F #에서 입력 및 출력으로 C# 클래스를 사용합니까?
의견이 있으십니까? 아래 Hath에
답변 감사합니다 : 당신이 (뿐만 아니라 운영자!) 직접 C#으로은 F # 라이브러리를 사용할 수는 :
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();
}
}
}
우수 아이디어. 나는 그 가격으로 통신 수를 얻지 못할 것이라고 생각하지만 시도해 볼 것입니다. – Benjol