在F#中对列表执行功能

-3 string f# list

好吧,我已经花了将近10个小时试图在F#解决这个问题

我需要按字母顺序对列表进行排序并反转列表

  • 我甚至不知道从哪里开始按字母顺序对它们进行排序.
  • 反向列表只返回一个包含所有10个元素的列表.有人请帮助我

我想出了什么:

[<EntryPoint>]
 printfn "Enter 10 Names";;
 let mutable list = [for i in 1 .. 10 -> System.Console.ReadLine(); ]
 printfn "%A" list
 //let list = List.sort
 //printfn "%A" list
 let reverseList list = List.fold (fun acc elem -> elem::acc) [] list
 printfn "%A" (reverseList [for i in 1 .. 10 -> List.iteri])
Run Code Online (Sandbox Code Playgroud)

Pet*_*etr 5

    [<EntryPoint>]
    printfn "Enter 10 Names";;
    let list = [for i in 1 .. 10 -> System.Console.ReadLine(); ]
    printfn "%A" list
    // List.sort takes 'list' as a parameter and returns sorted list 
    //(in the case of string list - alphabetically)
    let sortedlist = List.sort list
    printfn "%A" sortedlist
    // List.rev takes 'sortedlist' as a parameter and returns reversed list
    let sortedreversedlist = List.rev sortedlist
    printfn "%A" sortedreversedlist
Run Code Online (Sandbox Code Playgroud)

或者,您可以将List.sort函数的结果作为参数传递给List.rev函数,而不将其分配给变量:

let sortedreversedlist' =  List.rev (List.sort list)
printfn "%A" sortedreversedlist'
Run Code Online (Sandbox Code Playgroud)

此外,F#具有管道运算符"|>",可用于在列表上创建"管道"操作(将上一个功能的结果重定向到下一个).它允许以不同的方式编写相同的函数序列(按它们将执行的顺序):

let sortedreversedlist'' = list |> List.sort |> List.rev
printfn "%A" sortedreversedlist''
Run Code Online (Sandbox Code Playgroud)