List 随机整数列表上的F#选择排序

List 随机整数列表上的F#选择排序,list,sorting,random,f#,List,Sorting,Random,F#,我对F#还不熟悉,试图了解一些基本知识,但进展缓慢。在下面的代码中,我试图生成一个随机整数列表,然后对其进行排序 let randomNumberList count = let r = System.Random() List.init count (fun _ -> r.Next(100)) let rec selectionSort l = function | [] -> [] | l -> let min = List.min l i

我对F#还不熟悉,试图了解一些基本知识,但进展缓慢。在下面的代码中,我试图生成一个随机整数列表,然后对其进行排序

let randomNumberList count =
    let r = System.Random()
    List.init count (fun _ -> r.Next(100))

let rec selectionSort l = function
    | [] -> []
    | l -> let min = List.min l in
           let rest = List.filter (fun i -> i <> min) l in
           let sortedList = selectionSort rest in
           min :: sortedList
sortedList = selectionSort l

let unsortedList = randomNumberList 10
printfn "%A" unsortedList
printfn "%A" sortedList
另一种是随机数列表。这是可行的,但我希望生成的数字小于100,而不是我现在得到的大量值


谢谢你的耐心和帮助

如评论中所述,在
let rec selectionSort
中不需要
l
。固定代码:

let randomNumberList count =
    let r = System.Random()
    List.init count (fun _ -> r.Next(100))

let rec selectionSort = function
    | [] -> []
    | l -> let min = List.min l in
           let rest = List.filter (fun i -> i <> min) l in
           let sortedList = selectionSort rest in
           min :: sortedList

let unsortedList = randomNumberList 10
let sortedList = selectionSort unsortedList
printfn "%A" unsortedList
printfn "%A" sortedList
System.Console.ReadLine() |> ignore
是的缩写形式

let vname arg = match arg with
   | ... -> ...
   | ... -> ...

当你呼叫它时,它的号码是未声明的。复制/粘贴过程中是否丢失了某些内容?还有,“让rec selectoinSort l=function |[…”也被破坏了。是的,genRandomNumbers是一个输入错误。你能告诉我如何修复selectionSort函数吗?它不会是尾部递归的:)。您在函数中所做的最后一件事是调用(:),而不是selectionSort。看看生成的IL。
let vname = function
   | ... -> ...
   | ... -> ...
let vname arg = match arg with
   | ... -> ...
   | ... -> ...