cod*_*zen 1 f# partial-application seq
我正在写一个快速的DB perf测试,并选择F#所以我可以得到更多练习.
我创建了一个measureSelectTimes具有签名的方法Guid list * Guid list -> IDbCommand -> TimeSpan * TimeSpan.
然后,我称之为:
let runTests () =
let sqlCeConn : IDbConnection = initSqlCe() :> IDbConnection
let sqlServerConn : IDbConnection = initSqlServer() :> IDbConnection
let dbsToTest = [ sqlCeConn; sqlServerConn ]
let cmds : seq<IDbCommand> = dbsToTest |> Seq.map initSchema
let ids : seq<Guid list * Guid list> = cmds |> Seq.map loadData
let input = Seq.zip ids cmds
let results = input |> Seq.map (fun i -> measureSelectTimes (fst i) (snd i))
// ...
Run Code Online (Sandbox Code Playgroud)
我明确注释了类型以澄清.
我无法弄清楚的是如何在measureSelectTimes没有lambda的情况下打电话.我想像这样部分应用ids它:ids |> Seq.map measureSelectTimes但是后来我不知道如何处理结果部分应用的函数然后映射到cmds.这是什么语法?
你可以使用Seq.map2:
Seq.map2 measureSelectTimes ids cmds
Run Code Online (Sandbox Code Playgroud)
要么
(ids, cmds) ||> Seq.map2 measureSelectTimes
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1144 次 |
| 最近记录: |