У меня есть функция в C #, и я хотел бы перенести ее (среди прочего) на F #, просто для того, чтобы сделать это. К сожалению, я просто рассмотрел случай, для которого, кажется, нет никакого способа выразить это в F #: возьмите эту функцию C #
public static T Min<T>(params T[] p) where T : IComparable
{
T m1 = p[0];
foreach (T v in p)
{
m1 = (m1.CompareTo(v) < 0) ? m1 : v;
}
return m1;
}
Я подумал, что это будет довольно легко, но я не понимаю, как я могу указать переменный список аргументов в F #. Я пробовал это:
let rec Min l =
match l with
| [] -> 0 // should throw exception here
| [v] -> v
| (h::t) -> min h (Min t)
но вызов этого из C # ожидает Microsoft.FSharp.Collections.List
. Можно ли получить ожидаемое значение params T[]
, и если да, то как?