2008-12-23 35 views

回答

3

这是我最终做到的。

的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代码:

List<int> myInts = new List<int> { 5, 6, 7 }; 
    int max = FSModule.FindMax(myInts); 
0

您可以从F#项目中引用C#程序集。通过引用程序集公开您的列表。

8

您可以使用

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

任何IEnumerable<'a>seq转换为F#列表。请注意,F#列表是不可变的;如果你想使用可变列表,你不需要做任何特殊的事情,但是你将无法使用模式匹配。或者,您可以可以定义System.Collections.Generic.List<'a>的有效模式;这只是一个坏主意。

+0

只是想知道,但为什么没有人要编写C#的列表操作几个活跃的模式? – Juliet 2008-12-24 18:41:16

1

您可以传递一系列整数 - 基本上支持IEnumerable<int>的任何东西。

相关问题