Что я могу сделать, чтобы передать список из C # в F #? - PullRequest
7 голосов
/ 24 декабря 2008

Я знаю, что список f # не совпадает со списком c #. Что мне нужно сделать, чтобы иметь возможность передавать список целых чисел из приложения c # в библиотеку f #? Я хотел бы иметь возможность использовать сопоставление с образцом для данных, когда они находятся в коде f #.

Ответы [ 4 ]

8 голосов
/ 24 декабря 2008

Вы можете использовать

Seq.toList : IEnumerable<'a> -> list<'a>

для преобразования любого IEnumerable<'a> seq в список F #. Обратите внимание, что списки F # являются неизменяемыми; если вы хотите работать с изменяемым списком, вам не нужно делать ничего особенного, но вы не сможете использовать сопоставление с образцом. Или, скорее, вы можете определить активные шаблоны для System.Collections.Generic.List<'a>; это просто плохая идея.

3 голосов
/ 21 января 2009

Вот как я это сделал.

Код FSharp:

let rec FindMaxInList list = 
   match list with
   | [x] -> x
   | h::t -> max h (FindMaxInList t)
   | [] -> failwith "empty list"

let rec FindMax ( array : ResizeArray<int>) =
   let list = List.ofSeq(array)
   FindMaxInList list

Код c Sharp:

    List<int> myInts = new List<int> { 5, 6, 7 };
    int max = FSModule.FindMax(myInts);
1 голос
/ 24 декабря 2008

Вы можете передать последовательность целых чисел - это в основном все, что поддерживает IEnumerable<int>.

0 голосов
/ 24 декабря 2008

Вы можете ссылаться на сборки C # из проектов F #. Разоблачите свой список с помощью ссылочной сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...