使用F#函数时遇到问题

| 我是F#的新手,正在尝试学习如何在F#中使用递归函数。我正在尝试创建自己的功能,但无法使其正常工作。到目前为止,我设法做到的是得到10个随机数并打印出来。我在网上找到的这两段代码。我想使用排序功能(最终它将是一个排序功能,但我不是要这样),并且在使其正常工作时遇到了麻烦。我在遇到麻烦的地方放置了//。我不确定该功能会做什么,但是正如我在尝试使用它之前写的那样
   let randomNumberList count =  
         let rnd = System.Random() 
         List.init count (fun numbers -> rnd.Next (1, 1000)) 

    let rec printList listx =
           match listx with
         | head :: tail -> printf \"%d \" head; printList tail
         | [] -> printfn \"\"

    let nonSortedList = randomNumberList 10

    printList nonSortedList

    let rec sort list =
        match list with
        | head :: tail -> sort tail
        | [] -> 0

   sort  nonSortedList//I want to send the norSorted list into the sort function

   printList nonSortedList//print out results after putting it into the sort function
    
已邀请:
您没有将
sort
的结果分配给任何对象。 由于F#是(主要是)一种功能语言,因此强烈建议您使用不可变的数据结构。这意味着您的数据永远不会改变,它只会传递给使用该数据的函数以创建该数据的新表示形式。 因此,您的sort函数不会更改列表的顺序,而是应返回一个新列表,该列表表示传入列表的有序表示。 正如F#期望的那样,如果您不对结果做任何事情,F#就会很聪明,知道您可能正在做一些愚蠢的事情。 所以你应该去:
let orderedList = sort nonSortedList
printList orderedList 
如果您真的想忽略结果-有时您会这样做,如果您的方法有副作用,而您只是称呼它的副作用-您可以将结果传递给
ignore
sort nonSortedList |> ignore
    

要回复问题请先登录注册