List 创建程序读取文件并反向打印,如何删除所有新行引号?

List 创建程序读取文件并反向打印,如何删除所有新行引号?,list,f#,List,F#,我有一个程序,如果我键入“tac Text.txt”(或引号中的任何文件路径,但这是我制作/使用的测试文本文件),它将打印txt文件中的内容,但打印顺序相反。但它不能正常工作。应该显示为 No it is not. Yes-it is. No it is not. Hello my name is Jim. 它似乎是 ["No it is not."; ""; ""; "Yes-it is."; "No it is not."; "Hello my name is Jim

我有一个程序,如果我键入“tac Text.txt”(或引号中的任何文件路径,但这是我制作/使用的测试文本文件),它将打印
txt
文件中的内容,但打印顺序相反。但它不能正常工作。应该显示为

No it is not.


Yes-it is.
No it is not.
Hello  my  name  is  Jim.
它似乎是

["No it is not."; ""; ""; "Yes-it is."; "No it is not.";  "Hello  my 
name  is  Jim."].
我的代码目前是

open System
open System.IO

let countLines path = 
    File.ReadAllLines(path) |> Seq.toList|> List.rev



    // File.ReadAllLines reads the file, turns it into a list then reverses the list.


let printFunction lines = 
    printfn "%A" lines

    // This, when called, will print the file in reverse. 

let tac path =
    if File.Exists(path) then
        let lines = countLines path
        printFunction lines
    else
        printfn "File not found."

[<EntryPoint>]
let main argv = 
    if argv.Length > 0 then
        tac argv.[0] 
    else
        printfn "Error - Please enter file path."
    0


同样的事情也会发生,但我希望它能让我更接近我想要的结果。

它会写出你的整个数据类型,这是一个
字符串列表

您需要遍历列表:

let printFunction lines = 
    for line in lines do printfn "%s" line

单独打印一个数组、列表或一系列行:

let printFunction = Seq.iter (printfn "%s")

同样值得一看Asti的答案,并找出它为什么有效。这是部分函数应用程序如何在F#中工作的一个很好的例子。
let printFunction lines = 
    for line in lines do printfn "%s" line
let printFunction = Seq.iter (printfn "%s")