Il n'y a pas de fonctions matricielles intégrées en C#, mais il y en a dans le powerpack F #. Plutôt que d'utiliser une bibliothèque C# tierce ou open source, je m'interroge sur le fait de lancer la mienne en F # et d'exposer les bits utiles à C#.A propos de l'utilisation de F # pour créer un ensemble Matrix utilisable à partir de C#
Je me demandais si quelqu'un a déjà pensé à cela, ou l'a essayé, et si c'est une bonne idée.
Devrais-je l'exposer en tant que classe, ou une charge de fonctions statiques?
Ou devrais-je créer une classe wrapper C#, et avoir cet appel à F #? Ou est-ce que le F # utilise la classe C# comme entrée et sortie?
Des pensées?
Réponse grâce à Hath ci-dessous: vous pouvez utiliser la bibliothèque F # directement en C# (opérateurs aussi bien!):
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();
}
}
}
Excellente idée. Je vais essayer, bien que je soupçonne que je n'obtiendrai pas d'opérateurs à ce prix. – Benjol