2008-12-23 61 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>的任何東西。

相關問題