2014-10-02 96 views
0

我遇到了F#CSV类型提供程序的问题并且类型不匹配。我是F#的新手,所以很可能是一个基本问题。我已将文件放在blob存储上,以便您可以更轻松地进行复制。 https://analyzethis.blob.core.windows.net/voterinfo/WakeCountyVoterCSV 注意:您需要将供应商文件位置更改为您的下载位置才能完全复制。您也许能够从blob动态加载。F#CSV提供程序类型不匹配

我得到的错误是:

类型不匹配:期待一个序列< CsvProvider < ...>行> - > INT

但给予

序列< CsvProvider < .. >行> - >单元

类型int不匹配单元

code:

open FSharp.Data 
type voterType = CsvProvider<"C:\\Users\\dacrook\\Documents\\vrdb\\VoterCSVData2.csv", AssumeMissingValues=true, MissingValues=""> 

[<EntryPoint>] 
let main argv = 
    let voterData = voterType.Parse("C:\\Users\\dacrook\\Documents\\vrdb\\VoterCSVData2.csv") 
    voterData.Rows |> Seq.iter(fun r -> printfn "%A" r) 

任何帮助,非常感谢!

感谢,

〜大卫

+0

这可能是一个dupe的https://stackoverflow.com/questions/26080292/type-mismatch-works-in-f-interactive-but-not-in-a-real-f-project/26080298#26080298 – 2014-10-02 21:44:36

回答

2

main为int的预期收益类型,从而在main功能时,您的代码最后一行必须是int表达式

open FSharp.Data 
type voterType = CsvProvider<"C:\\Users\\dacrook\\Documents\\vrdb\\VoterCSVData2.csv", AssumeMissingValues=true, MissingValues=""> 

[<EntryPoint>] 
let main argv = 
    let voterData = voterType.Parse("C:\\Users\\dacrook\\Documents\\vrdb\\VoterCSVData2.csv") 
    voterData.Rows |> Seq.iter(fun r -> printfn "%A" r) 
    0 // <--- Add an int as the return value 
+0

所以我继续前进,并添加0和下面的readline,但它不是打印有关行的信息。把它放在交互中产生输出: val it:unit =() – 2014-10-02 20:13:58

+0

我刚刚意识到.Parse()用于解析传入的字符串csv。负载应该用于文件和uri的。不幸的是,当试图使用.Load时,它告诉我只支持Web地址。 – 2014-10-02 20:43:35

+0

看看http://stackoverflow.com/questions/25449774/fsharp-data-csv-load-failed-with-only-web-locations-are-supported,因为我认为它可能是相关的? – Steve 2014-10-02 21:12:17

相关问题