好吧,我已经花了将近10个小时试图在F#解决这个问题
我需要按字母顺序对列表进行排序并反转列表
我想出了什么:
[<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)
[<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)